2

我有一个更新记录的存储过程,运行它后我使用 LinqToSql 删除记录。我知道这很奇怪,但我只想测试它的数据上下文有多智能并了解它是如何工作的。

由于 datacontext 缓存了结果,因此可以记录通过它进行的任何更改,但现在我使用存储过程来更新某些内容,它不会知道。因此,当我尝试删除它时,会出现“未找到或更改行”的异常。

我如何告诉数据上下文我更新了什么?如果我能这样做,问题就会解决。

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 方法保留修改后的值,并通过数据库中的值更新其他未修改的值。

于 2009-05-28T06:03:53.817 回答
0

我想我遗漏了一些东西,但是如果您知道您的存储过程只是删除了记录,那么为什么还要在事后打扰 Linq2Sql 呢?DataContext 不会神奇地知道删除。

于 2009-04-30T06:30:43.677 回答