我需要更新给定实体对象的除 property1 和 property2 之外的所有字段。
有这个代码:
[HttpPost]
public ActionResult Add(object obj)
{
if (ModelState.IsValid)
{
context.Entry(obj).State = System.Data.EntityState.Modified;
context.SaveChanges();
}
return View(obj);
}
如何更改它以向 obj.property1 和 obj.property2 添加异常,以免不使用此代码进行更新?
假设您有一组要排除的属性:
var excluded = new[] { "property1", "property2" };
使用 .NET 4.5 上的 EF5,您可以执行以下操作:
var entry = context.Entry(obj);
entry.State = EntityState.Modified;
foreach (var name in excluded)
{
entry.Property(name).IsModified = false;
}
这使用了 .NET 4.5 上 EF5 的一项新功能,该功能允许将属性设置为未修改,即使之前已将其设置为已修改。
在 .NET 4 上使用 EF 4.3.1 或 EF5 时,您可以这样做:
var entry = context.Entry(obj);
foreach (var name in entry.CurrentValues.PropertyNames.Except(excluded))
{
entry.Property(name).IsModified = true;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)