EF Core 3.1更新实体

时间:2020-05-24 20:08:00

标签: c# entity-framework entity-framework-core ef-core-3.0

我想使用EF Core更新我的实体。这两种方法中的哪一种效率更高且更易于使用。

Context.Entry(entity).State = EntityState.Modified
Context.SaveChanges();

下一个是

var exist = entities.Find(entity.Id);
Context.Entry(exist).CurrentValues.SetValues(entity);  
Context.SaveChanges();

这两个主题都能胜任,但哪个更好?

1 个答案:

答案 0 :(得分:1)

这取决于您的情况。据我了解,第一个应该在db中重写整个实体。如果实体尚未被上下文跟踪,则第二个可能会向数据库创建extra request,但是应该仅更新actually have changed的字段。因此,如果启用了更改跟踪并且已经将实体获取到上下文中,并且具有很多列(或者包含很多数据并且可以通过EF进行比较的列),第二个应该更快。在其他情况下-第一个可以。