问题描述
我有一个模型设置使用LINQ到实体,并有code工作如预期,增加了数据库。但是,我不能得到的UpdateModel当我使用.NET 3.5的工作。
I have a model set up using LINQ to Entities and have code working that adds to the database as expected. However, I can't get UpdateModel to work when I am using .NET 3.5.
[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:
如果我的UpdateModel(XYZ)
例外不会发生,但数据不会保存任何
If I do UpdateModel(xyz)
the exception does not occur, but the data does not save either.
我怎样才能获得的UpdateModel与这个工作(无更新到.NET 4.0),为什么不能被更新(例外是没有帮助的,因为没有内部异常)?
How can I get UpdateModel to work with this (without updating to .NET 4.0), why can't it be updated (exception is not helpful as there is no inner exception)?
推荐答案
设法解决这个问题。可以以两种方式之一来进行:
Managed to solve the problem. Can be done in one of two ways:
TryUpdateModel(original)
或
db.ApplyPropertyChanges(original.EntityKey.EntitySetName, xyz)
不知道为什么 TryUpdateModel
将工作,但的UpdateModel
不会。也许只是在.NET 3.5中的错误。
No idea why TryUpdateModel
will work but UpdateModel
won't. Maybe just a bug in .NET 3.5.
这篇关于ASP.NET MVC 2 - "输入“XYZ”的模型无法更新"使用的UpdateModel和LINQ时实体(.NET 3.5)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!