c#-实体框架附加/更新混乱(EF核心)
作者:互联网
我对EF方法“附加”和“更新”有一些困惑.
据我了解,当调用“更新”时,特定实体内的每个属性都会被修改.
另一方面,“附加”方法以“未修改”状态启动实体.然后,当对特定属性进行操作时,仅修改该特定属性.因此,“附加”对于单独的属性更改更有用,而“更新”在您想要更新实体中的每个属性时更有用(这种理解我可能是错的).
但是,我不了解的是,在属性更改期间这两种方法都没有被调用时会发生什么.例如,考虑一个带有名为“ students”的表的示例:
_database.students.City = "Calgary";
_database.students.Name = "John Smith";
_database.SaveChanges();
由于我们没有将实体中的任何属性标记为已修改,因此上述代码生成的查询有何不同?
解决方法:
考虑以下代码:
students entity = new students() {
Id = 1,
City = "New York",
Name = "Sam"
};
using(SomeContext ctx = new SomeContext())
{
ctx.Entry(entity).State = EntityState.Modified;
ctx.SaveChanges();
}
假设我们在数据库中有一条ID = 1的记录,则上面的代码将更新数据库中的该实体.
当您知道数据库中已存在某个实体但要在进行更改后将状态更改为已更改时要使用某些更改时,将使用附加.
标签:sql-update,c,entity-framework 来源: https://codeday.me/bug/20191109/2010579.html