我的表格有两列CreatedBy
和CreateTime
。在我的视图表单中,我没有这些字段。现在,当我使用ASP.NET MVC4 Edit(post)方法更新记录时,这些列被设置为null。但是我想保留这些值。我知道在我的Edit(post)方法中,我可以从数据库中检索记录并手动设置这些值。但我想知道是否可以要求Entity Framework不更改这些字段的值。
我的表格有两列CreatedBy
和CreateTime
。在我的视图表单中,我没有这些字段。现在,当我使用ASP.NET MVC4 Edit(post)方法更新记录时,这些列被设置为null。但是我想保留这些值。我知道在我的Edit(post)方法中,我可以从数据库中检索记录并手动设置这些值。但我想知道是否可以要求Entity Framework不更改这些字段的值。
不可以直接更新,如果要保留旧值,则需先获取记录,然后手动分配需要更新的值。另外一种方法是逐个遍历实体属性,并标记需要修改的属性,如下所示:
db.MyEntity.Attach(myEntity);
db.Entry(myEntity).Property(e => e.MyProperty).IsModified = true;
db.SaveChanges();
@Html.HiddenFor()
。ViewBag
或ViewData
将数据传递给视图。@Html.HiddenFor(m => m.CreatedBy)
@Html.HiddenFor(m => m.createTime)
2) 您可以手动更新该实体并保留这两个属性不变:
var ent = dbctx.Entities.Find(model.ID);
ent.Prop1 = model.Prop1;
// ... also for other properties except those two property
dbctx.SaveChanges();
Html.HiddenFor(m => m.createdBy)
将它们添加到表单中。现在它们在表单中但不会显示,并且在提交方法中仍然具有值。