如何告诉datacontext我已经通过存储过程更新了记录

时间:2009-04-30 06:25:07

标签: linq-to-sql datacontext

我有一个存储过程来更新记录,运行后我使用LinqToSql删除记录。我知道这很奇怪,但我只是想测试它是多么聪明的datacontext并理解它是如何工作的。

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

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

2 个答案:

答案 0 :(得分: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. KeepChanges
  2. KeepCurrentValues
  3. OverwriteCurrentValues
  4. 此处使用的版本(KeepChanges)强制Refresh方法保留修改后的值,并通过DB中的值更新其他未修改的值。

答案 1 :(得分:0)

我想我错过了一些东西,但是如果你知道你的存储过程只是删除了记录,那么为什么甚至在事后触摸Linq2Sql呢? DataContext不会神奇地了解删除。