Ognacの雑感

木漏れ日々

目次

Blog 利用状況

書庫

ギャラリ

料亭でインスタントラーメンを提供しているような気がする

Linqでの自動生成で全項目のwhere句が生成される趣旨のことがかずきさんのエントリに書かれてありました。
全項目のWhere句といえば、 ADO.NETの CommandBuilderが生成するSQL文がそうですね、「単一テーブルのメンテ等はノーコーディングでできる」という売りですが、これが結構曲者で、少し突っ込んだ仕様にすると足枷になる現場があったりします。
CommandBuilderの仕様上、複数のテーブルから生成するSQL文では対応できないのです。売り言葉を額面通り信じてコーディング標準に取り入れたりされると、迷惑を被ります。CommandBuilder生成を使えと強要されると、がっかりします。このようにするものだと信じてしまう新人がいるのでアカンでと思うのです。

この手のツールは便利ツールなので、局所的には重宝しています。しかし、これを使ってアプリを作ると使用上の制約で作りが冗長且つ歪になり、靴に足を合わせることになりがちです。
実務では単一テーブルだけの引用はは少なく、コードとコードに対応した表示値(商品コードと商品名など)を結合した引用にすることが多いです。
その引用の結果に変更追加を加える時は INSERT句/UPDATE句のWhere句をコーディングすることになります。この辺りのコーディング(楽観的排他の判定項目を盛り込んだ)が最低ラインだと思うのです。それを省略しようとする標準規約は????  
便利ツールはインスタントラーメンだと思っています。小腹対策には丁度ですが、ディナーに用いるのは如何なものでしょう。

投稿日時 : 2007年8月17日 9:44

Feedback

# re: 料亭でインスタントラーメンを提供しているような気がする 2007/08/17 9:53 中博俊

ダメダメダメダメ~~
全然だめだー

DBはそんなに安易なもんじゃないと言っている私は旧人類(w
ねっ>ognacさん 仲間にするな(^^;;

# re: 料亭でインスタントラーメンを提供しているような気がする 2007/08/17 18:12 黒龍

ある程度ならMergeでしのげるんですがあんまりやらないのかな??
単一テーブルからなる更新用DataTable&Adapterと表示用DataTable&Adapterを用意しておいて更新時は更新用にMergeして更新。この場合結果は取り直さないとだめですが・・・。
あとややこしいのであまりやりませんが単一テーブルで生成しておいてから追加クエリ&列を手動追加もやったりします。修正時にうっかり消しちゃうことが多いのでお勧めは出来ません^^;
中さんはCommandBuilderなぞ使わない派だったようなw(ストアドマンセー)

# re: 料亭でインスタントラーメンを提供しているような気がする 2007/08/17 18:53 Ognac

>ダメダメダメダメ~~
困ったことにノンプログラムで動作する物をスバラシイ物と勘違いしている人もいたりして....>
手数を踏む工数が簡略されるのは大いに結構です、しかし根底の知識を隠すような簡略化はアカンと思うのですよ。

>ある程度ならMergeでしのげるんですがあんまりやらないのかな??
絆創膏的対症療法としては使いますね。本式納品時はひっかかるものがあります。
生理的にCommandBuilderを信じてないのかも知れません。
気になるのですが、Mergeでしのぐと、その仕組みによる後工程が発生するので潜在バグの温床になりませんか?
表示テーブルと更新テーブルをn個作ることによるソースの増加はバグの増加と考えてしまいます。

# re: 料亭でインスタントラーメンを提供しているような気がする 2007/08/17 22:23 えムナウ

Linq to SQL は単一テーブルのお手軽ツールです。
今までのDataTableをオブジェクト化してみた、みたいなもの。
Linq to Entities はちがいますよ。

# re: 料亭でインスタントラーメンを提供しているような気がする 2007/08/17 22:24 えムナウ

ちなみに私もCommandBuilderは絶対に使いません。

# re: 料亭でインスタントラーメンを提供しているような気がする 2007/08/17 23:30 Ognac

>Linq to SQL は単一テーブルのお手軽ツールです。
>Linq to Entities はちがいますよ
そうでしたか。誤解してました。有難うございます。
単一テーブルの意味合いは扱い安い反面、一般的な設計者にはきちんと理解して欲しいところですね。

タイトル
名前
Url
コメント