当你使用这个DbSet.Update
方法时,实体框架将你实体的所有属性标记为EntityState.Modified
,所以跟踪它们。如果你只想更改部分属性,而不是全部属性,请使用DbSet.Attach
。
首先看一下我们province表中的数据。
方式一,使用Attach更新某个属性的值(注意,不是所有的属性都作修改)
紧接着上一节的内容,我们在HomeController中添加修改代码,看下DbSet.Attach(实体)所做的修改。
//四、DbSet.Attach(实体)与DbContext.Entry(实体).State = EntityState.Modified 区别
//DbSet.Attach(实体)
var proAttach = _context.Provinces.Where(p => p.Name == "上海").FirstOrDefault();
if (proAttach != null)
{
proAttach.Population = 10;
_context.Provinces.Attach(proAttach);
}
_context.Sav