我的表有两列CreatedBy
和CreateTime
. 在我的视图表单中,我没有这些字段。现在,当我使用 ASP.NET MVC4 Edit (post) 方法更新记录时,这些列设置为 null。但我想保留这些价值观。我知道在我的编辑(发布)方法中,我可以从数据库中检索记录并手动设置这些记录。但我想知道是否可以要求实体框架不要更改这些字段的值。
问问题
1541 次
3 回答
3
不,您不能,如果要保留旧值,则必须先获取记录,然后手动分配要更新的值。唯一的另一种方法是逐个属性和标记要修改的实体属性,如下所示:
db.MyEntity.Attach(myEntity);
db.Entry(myEntity).Property(e => e.MyProperty).IsModified = true;
db.SaveChanges();
无论哪种方式,您最终都必须自己做手工工作。
于 2013-08-13T19:52:27.497 回答
2
你必须在这里选择:
1)正如@KennyZ提到的,添加到@Html.HiddenFor()
您视图中的某个地方,到您的表单中:
@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();
于 2013-08-14T07:35:30.773 回答
0
你当然可以。我假设它们已经在您的模型中,只需将它们添加到带有Html.HiddenFor(m => m.createdBy)
. 现在它们在表单中但未显示,并且在 Post 方法上仍然具有值。
于 2013-08-13T21:26:45.200 回答