我想使用EF Core更新我的实体。这两种方法中的哪一种效率更高且更易于使用。
Context.Entry(entity).State = EntityState.Modified
Context.SaveChanges();
下一个是
var exist = entities.Find(entity.Id);
Context.Entry(exist).CurrentValues.SetValues(entity);
Context.SaveChanges();
这两个主题都能胜任,但哪个更好?
答案 0 :(得分:1)
这取决于您的情况。据我了解,第一个应该在db中重写整个实体。如果实体尚未被上下文跟踪,则第二个可能会向数据库创建extra request,但是应该仅更新actually have changed的字段。因此,如果启用了更改跟踪并且已经将实体获取到上下文中,并且具有很多列(或者包含很多数据并且可以通过EF进行比较的列),第二个应该更快。在其他情况下-第一个可以。