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