如何在Linq中更新与数据库断开连接的实体?

Ali*_*söz 6 c# linq

下面的代码无法正确运行并抛出InvalidOperationExcepiton.

public void Foo()
{
 DataContext context = new DataContext();
 LinqEntity item = new LinqEntity(){ Id = 1, Name = "John", Surname = "Doe"} ;
 context.LinqEntities.Attach(item, true);
}
Run Code Online (Sandbox Code Playgroud)

Sco*_*ols 4

默认情况下,实体在进行编辑时将使用所有字段来检查并发性。这就是引发 InvalidOperationException 的原因。

这可以将所有字段的更新检查属性设置为从不。必须在所有字段上执行此操作才能附加修改后的实体。如果完成此操作,对 context.SubmitChanges() 的额外调用将​​保存数据。

或者,如果您知道原始值,则可以附加然后进行更新,但正在检查的所有值都必须与原始值匹配。

LinqEntity item = new LinqEntity(){ Id = 1, Name = "OldName", Surname = "OldSurname"}; 
context.LinqEntities.Attach(item);
item.Name = "John";
item.Surname = "Doe";
context.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)