1

ここで誰かが尋ねました:

「Linq-To-Sql を使用すると、SP を呼び出すことができます。この SP が更新/削除/挿入を実行する場合、その後に SubmitChanges() を実行する必要がありますか?」

そして答えは次のとおりでした。

「いいえ。コードは機能します。変更の送信は、変更された LINQ to SQL オブジェクトにのみ関係し、ストアド プロシージャには関係しません。」

明確にしたいのですが:

(すみません、私は比較的LINQに慣れていません)

はい、しかし、ストアド プロシージャは datacontext オブジェクトをバイパスし、データベース自体を変更しませんか? (一方、linq は、datacontext.submitchanges メソッドが呼び出されるまで、datacontext オブジェクトのみを変更し、そこでデータベースを変更します)

ストアド プロシージャでデータ コンテキスト オブジェクトを変更することはできますか? すでにこれを行っていますか?

そのようにしてもらえますか

  • linq を使用して SP を呼び出すと (データベースが直接変更されると想定しています)、
  • 次に、linq を使用してデータ コンテキスト オブジェクトを変更し、データ コンテキスト オブジェクトに加えた変更を送信します。

私が行った2つの異なる変更(1つはSPで、もう1つはデータコンテキストへのLinq)は干渉しませんか?

私が本当に欲しいのは、ストアド プロシージャでデータ コンテキストを変更する方法です。これは可能ですか?

主にストアド プロシージャを持つ Web サイトを SQL から LINQ に変換し、どのストアド プロシージャを LINQ に変換し、どのストアド プロシージャを SQL に保持し、LINQ で SP 呼び出しを行うかを選択しようとしていることを言及する必要があります。

助けてくれてありがとう - ジェフ

4

2 に答える 2

0

ストアド プロシージャを介してレコードを更新すると、読み込まれた (および追跡された) オブジェクトが古くなる可能性があります。古いオブジェクトで SubmitChanges を呼び出すと、同時実行例外が発生します。Refreshメソッド onを使用して、古いオブジェクトを更新できますDataContext

于 2010-08-06T17:49:30.227 に答える
0

FWIW、私たちのリトマステストは、単一のレコードを挿入/更新してORMに移動できる、簡単な「crud」タイプのPROCです

ただし、より高度なプロセス (バッチ更新、またはパフォーマンスが非常に重要なプロセス) は「そのまま」にしておく傾向があります。

ただし、はい、DataContext で変更されたデータの状態に依存する Proc を呼び出す前に、SubmitChanges() を呼び出す必要があります。

おそらく無関係ですが、作業単位を制御する必要がある場合は、コードの周りに TransactionScopes を配置することを検討してください。

于 2010-08-06T15:11:42.310 に答える