我有一个使用 LINQ to Entities 设置的模型,并且代码可以按预期添加到数据库中。但是,当我使用 .NET 3.5 时,我无法让 UpdateModel 工作。
[HttpPost]
public ActionResult Edit(Site.Models.XYZ xyz)
{
try
{
var original = db.XYZ.First(u => u.id == xyz.id);
UpdateModel(original);
db.SaveChanges();
return RedirectToAction("Index");
}
catch (Exception ex)
{
return View("Error");
}
}
这会导致以下异常:
System.InvalidOperationException was caught
Message=The model of type 'Site.Models.XYZ' could not be updated.
Source=System.Web.Mvc
StackTrace:
at System.Web.Mvc.Controller.UpdateModel[TModel](TModel model, String prefix, String[] includeProperties, String[] excludeProperties, IValueProvider valueProvider)
at System.Web.Mvc.Controller.UpdateModel[TModel](TModel model, String prefix)
at Site.Controllers.XYZController.Edit(Site.Models.XYZ xyz) in D:***.cs:line 81
InnerException:
If I do UpdateModel(xyz)
异常没有发生,但数据也不保存。
我怎样才能让 UpdateModel 与此一起使用(无需更新到.NET 4.0),为什么它不能更新(异常没有帮助,因为没有内部异常)?
设法解决了问题。可以通过以下两种方式之一完成:
TryUpdateModel(original)
or
db.ApplyPropertyChanges(original.EntityKey.EntitySetName, xyz)
不知道为什么TryUpdateModel
会起作用但是UpdateModel
惯于。也许只是 .NET 3.5 中的一个错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)