我有两个项目 - 一个包含EDM实体框架模型的类库和一个独立的ASP.NET MVC项目。
我在使用MVC编辑和保存实体时遇到了问题。在我的控制器中,我有以下代码:
public class UserController : Controller
{
public ActionResult Edit(int id)
{
var rep = new UserRepository();
var user = rep.GetById(id);
return View(user);
}
[HttpPost]
public ActionResult Edit(User user)
{
var rep = new UserRepository();
rep.Update(user);
return View(user);
}
}
我的UserRepository
有一个如下的更新方法:
public void Update(User user)
{
using (var context = new PDS_FMPEntities())
{
context.Users.Attach(testUser);
context.ObjectStateManager.ChangeObjectState(testUser, EntityState.Modified);
context.SaveChanges();
}
}
现在,当我在编辑用户页面上点击“保存”时,参数
user
只包含两个填充的值:Id和FirstName。我认为这是因为在视图中我只显示了这两个属性。
我的问题是,如果我要更新用户的FirstName并想保存它,由于其他未在视图中显示的User
属性现在包含0或NULL值,我该怎么做呢?
我一直在阅读有关使用存根实体的内容,但我一无所获,因为我看到的所有示例都没有运作,即我不断遇到实体键相关的异常。
有人能指向一个好的教程/示例,说明如何使用由MVC前端调用的存储库类来更新EF 4实体吗?
User.Addresses
),并且您正在将其绑定到视图中,则上述方法不会更新地址。我建议您再次从数据库中检索用户,然后使用TryUpdateModel
来更新对象。有关更多信息,请参见我的最近的问题/答案:https://dev59.com/E2445IYBdhLWcg3w4-Be#4666466 - RPM1984TryUpdateModel()
会怎样。 - Jason EvansApplyCurrentValues
就可以了。但是您需要保持一致。祝好运。 :) - RPM1984ApplyCurrentValues
是标量。 - Craig Stuntz