使用EntityState.Modified的EF更新

Wil*_*lly 10 entity-framework

通常我正在使用此代码

Member member = ctx.Members.Find(id);
member.Name = txtName.Text;
ctx.Entry(member).State = EntityState.Modified;
ctx.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

当我想使用实体框架更新模型时.我在SO上找到了一个不用于EntityState.Modified更新模型的示例.我试图删除该行,它仍在工作.什么是利弊使用EntityState.Modified而不使用EntityState.Modified

注意:我在WinForms中使用Entity Framework 6 Code First

Yoo*_*ooz 15

EntityState.Modified在您的情况下是无用的,因为当您从上下文中检索它时,您正在更新的实体已被上下文跟踪.

在以下场景中您不需要从上下文中检索实体,您将需要它:

Member member = new Member({Id=1, Name="member"}) ;
context.Entry(member).State = EntityState.Modified; 
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

此外,如前面的答案所述,您的上下文有时只跟踪数据库的有限"视图",因此您需要像上面一样手动启动跟踪.

微软doc