使用实体框架仅更新数据库中的某些列
本文关键字:数据库 更新 实体 框架 | 更新日期: 2023-09-27 18:19:48
我知道数据库中已经存在一个实体,但上下文当前没有跟踪它。我使用DbSet上的Attach方法强制上下文跟踪实体。然后为必要的属性设置'IsModified' = true
。但EF
试图更新db表中的每个属性,而SaveChanges()
方法抛出了一些属性是必需的并且不能为空的异常。尽管我只将一个属性标记为已修改。我使用的是EF 6.0版。
这是我的代码:
public bool ChangeState(int id, bool state)
{
try
{
var obj = new T {ID = id, Hidden = state};
_context.Set<T>().Attach(obj);
_context.Entry(obj).Property(x => x.Hidden).IsModified = true;
return _context.SaveChanges() == 1;
}
catch (DbEntityValidationException dbEx)
{
...
}
}
}
你知道吗?
好的,要想知道这个问题的答案,我会在这里重复@Stephen Muecke的答案:
你可以试试_context.Configuration.ValidateOnSaveEnabled = false;
请不要投票给我,这归功于@Stephen Muecke