Asp.net mvc ASP.NETMVC中实体框架实体的编辑与更新
我有一个名为“ABC”的entityframework实体(属性ID和标题) 在更新记录视图中,我添加了ID作为隐藏字段,标题是文本框 控制器看起来像:Asp.net mvc ASP.NETMVC中实体框架实体的编辑与更新,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我有一个名为“ABC”的entityframework实体(属性ID和标题) 在更新记录视图中,我添加了ID作为隐藏字段,标题是文本框 控制器看起来像: public ActionResult UpdateAction( ABC obj ) 我在obj中得到了一切美好而公平的东西,即头衔和身份证 现在,为了更新数据库中的记录,我读取了原始实体: var original = (from x in base.context.ABC where x.id == obj.id ).Single();
public ActionResult UpdateAction( ABC obj )
我在obj中得到了一切美好而公平的东西,即头衔和身份证
现在,为了更新数据库中的记录,我读取了原始实体:
var original = (from x in base.context.ABC where x.id == obj.id ).Single();
现在,为了反映原始版本中的更改,我认为应该更新模型:
this.TryUpdateModel( original );
我得到一个错误:|。。。声明无法更改列ID
The property 'id' is part of the object's key information and cannot be modified.
我不想手动将属性指定回原始对象
另一种选择是:
TryUpdateModel(original, new string[] { "Title" }, form.ToValueProvider());
但我讨厌字符串——而且,我的对象有20个属性:|
有人能建议一个更好的模式吗
Rgds公共类控制器文本:控制器
{
受保护的void UpdateModel(TModel模型,参数表达式[]属性),其中TModel:class
{
var props=新列表(property.Length);
foreach(属性中的var p)
{
var memberExpression=removeOne(p.Body)作为memberExpression;
if(memberExpression==null)
{
抛出新的NullReferenceException(“无法检索有关{0}成员的信息”。FormatThis(typeof(TModel.Name));
}
添加(memberExpression.Member.Name);
}
this.UpdateModel(model,props.ToArray());
}
私有静态表达式removeOne(表达式体)
{
var一元=作为一元表达式的主体;
if(一元!=null)
{
返回一元操作数;
}
返回体;
}
}
例如:
UpdateModel<MyModel>(model, x => x.PropertyFromMyModel_1, x => x.PropertyFromMyModel_2);
UpdateModel(model,x=>x.PropertyFromMyModel_1,x=>x.PropertyFromMyModel_2);
我想我已经找到了解决办法@
UpdateModel<MyModel>(model, x => x.PropertyFromMyModel_1, x => x.PropertyFromMyModel_2);