我有mvc视图,它有一些来自实体的列。当我执行db.SaveChanges()时,所有不属于视图的列都将使用NULL进行更新,因此会覆盖数据库记录中存在的任何值。那太蹩脚了。 我知道我可以为视图做ModelView并绑定我想要的那些列。但我正在寻找一种方法来简单告诉EF,在此特定更新期间“忽略”列,以便不更新MvC视图中不存在的列。 我正在使用EF 5.有什么建议吗?
答案 0 :(得分:0)
我不知道为什么你要避免创建一个单独的模型,但我想你知道你在做什么,所以也许尝试这种方法来欺骗EF认为属性没有改变:
var entry = context.Entry(obj);
entry.Property(name).IsModified = false;
我自己没有尝试过,但它应该可以在EF 5中使用。如果它不起作用,请尝试通过搜索entry.CurrentValues.PropertyNames
集合访问该属性条目,然后将IsModified
设置为{ {1}}。
答案 1 :(得分:0)
我认为我需要的是这个
User u = db.Users.Find(user.UserID);
if (u!=null) {
TryUpdateModel(u);
if (ModelState.IsValid)
{
db.SaveChanges();
}