2

レコードを更新するストアド プロシージャがあり、それを実行した後、LinqToSql を使用してレコードを削除します。私はそれが奇妙であることを知っていますが、データコンテキストがどれほどスマートであるかをテストし、それがどのように機能するかを理解したいだけです.

データコンテキストは結果をキャッシュするため、それを介した変更を記録できますが、ストアドプロシージャを使用して何かを更新すると、わかりません。そのため、削除しようとすると、「行が見つからないか変更されました」という例外が発生します。

更新した内容をデータコンテキストに伝えるにはどうすればよいですか? 私がそうすることができれば、問題は解決します。

4

2 に答える 2

3

System.Data.Linq.RefreshMode 列挙体を渡す DataContext Refresh() メソッドを使用できます。例を次に示します。

NorthWindDataContext context = new NorthwindDataContext();
context.Refresh(RefreshMode.KeepChanges);

明確にするために:
http://msdn.microsoft.com/en-us/library/system.data.linq.refreshmode.aspx">RefreshMode 列挙には 3 つの値があります。

  1. 変更を保持
  2. 現在の値を保持
  3. 現在の値を上書き

ここで使用されたバージョン (KeepChanges) は、Refresh メソッドが変更された値を保持し、DB からの値によって他の変更されていない値を更新することを強制します。

于 2009-05-28T06:03:53.817 に答える
0

私は何かが欠けていると思いますが、ストアド プロシージャがレコードを削除するだけであることがわかっている場合は、事後に Linq2Sql に触れる必要があるでしょうか? DataContext は、魔法のように削除について知ることはありません。

于 2009-04-30T06:30:43.677 に答える