- PR -

【LINQ to SQL】 更新ロジックのカスタマイズ

投稿者投稿内容
つと
会議室デビュー日: 2003/01/10
投稿数: 10
投稿日時: 2008-05-24 16:51
今までやった方法とその結果を報告します。
これから同じ内容でお困りの方は参考にどうぞ。

■ストアドプロシージャで SET NOCOUNT OFF にして更新件数を返すようにする
参照していないようです。
そもそも更新ロジックが「カスタマイズ」の場合は、同時実行制御はユーザー側に一任するのが普通なので当たり前といえば当たり前です。

■Scottさんのブログの方法
実際やってみるともちろん動作するのですが、デザイナでdbmlファイルを保存するたびにコードの生成が行われるため、同名のメソッドが存在するといったエラーが発生します。
その都度コードから削除するのであれば使える方法です。

■更新ロジックを「ランタイムを使用」とし、自前のパーシャルメソッドを呼ばせる方法
当前といえば当前ですが使えません。
自前のロジックを終えた後、ランタイムの更新ロジックが実行されます。
ここでのパーシャルメソッドはデザイナが使用することを目的としていて、ユーザーに提供されたものではないようです。


以上、些細なことでもアイデアがあればいつでも返信お待ちしております。

[ メッセージ編集済み 編集者: つと 編集日時 2008-05-24 16:54 ]
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2008-05-25 09:07
引用:

正直なところ VisualStudio2008 と LINQtoSQL + ストアドプロシージャ を使用してアプリケーションを開発する際には、誰もが必ず引っかかるのではないかと思います。


ところで、Linq to SQL を利用する目的はなんですか。
それから、Linq to SQLでなぜストアドプロシージャ(SPROC)を使用する必要が
あるのですか。

これは、私の個人的な意見ですが

・性能が要求される案件ではLinq to SQLではなくSPROCを使用した
 独自の多階層のアプリケーション(3階層ぐらい)にする

・生産性が要求される案件では、Linq to SQLを使用する。この場合、SPROCは
 使用しない。楽観的ロックもLinq to SQLの処理に委ねる

がよいのではと考えています。

Linq to SQLのメリットは、SQLステートメントをC#, VBなどで直接記述できる
ことだと思うのですが・・・Linq to SQLでSPROCを多用してどんなメリットが
あるのでしょうか。
_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
つと
会議室デビュー日: 2003/01/10
投稿数: 10
投稿日時: 2008-05-25 23:34
Access様の質問の真意を取り違えているかもしれませんが、質問文に対してそのまま返答致します。
また、本スレッドの流れから大幅に外れるのであれば新規スレッドを立てさせて頂きます。

>ところで、Linq to SQL を利用する目的はなんですか。
>それから、Linq to SQLでなぜストアドプロシージャ(SPROC)を使用する必要が
>あるのですか。

目的は開発効率の向上・コストの削減です。
LINQtoSQLでストアドプロシージャがなぜ必要かとは少々質問の意味を考えてしまいますが、LINQtoSQLに限らずデータ更新処理にストアドプロシージャを使用する理由はいくらでもあります。
単純な例を挙げますと明細金額を更新する度に合計金額を再計算・更新する…などです。
もちろんLINQtoSQLでもできますしストアドプロシージャを使わなくてもできますが、使う理由とそのメリットは説明不要だと思います。


>・性能が要求される案件ではLinq to SQLではなくSPROCを使用した
> 独自の多階層のアプリケーション(3階層ぐらい)にする

性能とはレスポンス性能のことだと理解して返答しますが、LINQtoSQLとストアドプロシージャは性能や階層で比較するものではないと思います。
また「独自の多階層アプリケーション」がどのようなものかわかりませんが、何階層のアプリケーションだとしてもLINQtoSQLの利用価値は変わりません。


>・生産性が要求される案件では、Linq to SQLを使用する。この場合、SPROCは
> 使用しない。楽観的ロックもLinq to SQLの処理に委ねる

私には「LINQtoSQLを使用する場合はストアドプロシージャを使用しない」と考える理由が思いつきません。
よろしければ問題となる例を挙げて頂けると勉強になります。
楽観的ロックをLINQtoSQLに委ねるというのは「可能であればそれで十分」としか言えないと思いますが如何でしょうか。


>Linq to SQLのメリットは、SQLステートメントをC#, VBなどで直接記述できる
>ことだと思うのですが・・・Linq to SQLでSPROCを多用してどんなメリットが
>あるのでしょうか。

それはLINQtoSQLを過小評価しすぎではないでしょうか。
また私の説明不足(というか今回は無関係なので・・・)もありますが、今回ストアドプロシージャは挿入・更新・削除で使用しており、選択(SELECT)はありません。
しかし、あったとしてもメリットはもちろんあります。

もしAccess様がLINQtoSQL+ストアドプロシージャを使ったアプリケーション開発をされたことがなければ、一度やってみては如何でしょうか。
きっとメリット・デメリットが見出せると思います。

スキルアップ/キャリアアップ(JOB@IT)