Ognacの雑感

木漏れ日々

目次

Blog 利用状況

書庫

ギャラリ

Adapterも便利ツールなんだが

ADO2.0から DataReaderからDataSet/DataTableを生成するメソッドが加わったので重宝しています。
CommandBuilderは便利な反面、使い道が限定されるので余り使わない...(以前にも書きました。)
Update_sql,Insert_sqlを書いてAdapterに登録して、Adapter.Updateをコールするのに煩雑感を覚えるのです。
cmd.ExecuteNonQuery()で処理したほうが流れが良く見えます。 実際Adapter.Updateを使う局面に遭遇したことがないので、私には無くても支障がないです。
便利ツールであるだけに現場では Adapter.Updateで作成している人が結構いたりします。DataBaseアプリの入門書はAdapter使用を前提のが多い気がします。
DBアクセスはAdapter経由が定石と思われていますが、使わない手もある事を知って欲しかったりします。
.net1.1のWindowsアプリでDataBinding Controlは画面に対になって存在してました。これも便利なんですが、仕組みが隠されるので込み入った事をさせると嵌ることがあるようです。
便利ツールの隠れた部分がイヤで自前でコードを書いていますが、「解り難い。教科書のように書いてくれ」と苦情がでて複雑な心境。

投稿日時 : 2007年8月24日 11:51

Feedback

# re: Adapterも便利ツールなんだが 2007/08/24 12:48 黒龍

結合表を好み、業務ロジックはストアドなどシンプルな方向で考えると確かにAdapterは煩雑で流れが見えにくいと思います。根本原因としてADO.NETでは非接続型を念頭に置いた設計思想となっているため非接続のための機能が不要であれば抽象化された層は不要なものとなります。
が、画面への表示の最に直接設定では無くデータと表示を分離することでメリットがあるように抽象化された層でのメリットというのも存在します。
代表的な例としてはオフライン対応などでしょうか。(オフラインには若干役不足という話もありますが)
またインメモリデータベースとしての特徴を生かしてDBアクセスを減らしたりといったことも可能になってきます。そしてこれらのオフライン対応はスケールアップではなくスケールアウトでの規模拡張を可能にします。

見出し、明細からなる親子テーブルを登録する。見出しの事前登録は不可。などの仕様であればAdapterを使った場合はデータセット上でリレーションを保持してアップデート順序に気を使う程度で済みますが上記のように自身で発行していた場合関連の扱いが面倒になりますし更新後のデータの書き戻しなども面倒な処理になると思います。

やはり特定のシナリオ以外では不要な処理も多いのですが特定のシナリオでは便利というのが実感です。ビギナーの方であれば覚えることが少なく済む(注意点は多々ありますが使うのに技量を問われないという意味)ので悪くは無いと思います。逆にスキルのある方から見ると無駄&ややこしいとおもいます。

長文になってしまい済みませんでした。

# re: Adapterも便利ツールなんだが 2007/08/24 17:00 Ognac

>やはり特定のシナリオ以外では不要な処理も多いのですが特定のシナリオでは便利というのが実感です。
おぉ! そのシナリオは! ありがとうございます。目から鱗です。知らなければ自力で実装するトコだった。

>ビギナーの方であれば覚えることが少なく済む....悪くは無いと思います。
問題なのはビギナーの方がこれで十分だと思い込むことでしょうね。

# re: Adapterも便利ツールなんだが 2007/08/24 17:16 黒龍

> 問題なのはビギナーの方がこれで十分だと思い込むことでしょうね。

ですね。効率を考えるとかなりのケースでベター(動く)ではあるのですが全てのケースでベストにはなりえないと思います。
やはり手馴れた人ほど無駄を感じちゃうんだと思います。

タイトル
名前
Url
コメント