Jas*_*ans 7 entity-framework-4 asp.net-mvc-3
我有2个项目 - 一个包含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);
}
}
Run Code Online (Sandbox Code Playgroud)
我UserRepository有一个像这样的Update方法:
public void Update(User user)
{
using (var context = new PDS_FMPEntities())
{
context.Users.Attach(testUser);
context.ObjectStateManager.ChangeObjectState(testUser, EntityState.Modified);
context.SaveChanges();
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我在编辑用户页面上单击"保存"时,该参数user仅包含两个填充的值:Id和FirstName.我认为这是因为我只在视图中显示这两个属性.
我的问题是,如果我正在更新用户的名字,然后想要保存它,我想对User视图中未显示的其他属性做什么,因为它们现在在user对象中包含0或NULL值?
我一直在阅读很多关于使用存根实体的内容,但是我无法快速完成,因为我见过的所有例子都没有.即我不断获得与EntityKey相关的异常.
有人能指出我如何使用由MVC前端调用的存储库类更新EF 4实体的好教程/示例吗?
好吧,经过一番尝试和错误,我看起来找到了解决方案。这是我的更新Update方法UserRepository:
public void Update(User user)
{
using (this.Context)
{
var tempUser = new User { usr_id = user.usr_id };
this.Context.Users.Attach(tempUser);
this.Context.ApplyCurrentValues("Users", user);
this.Context.SaveChanges();
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试过的其他一些例子与上面的非常接近,但只是没有达到目标。
| 归档时间: |
|
| 查看次数: |
13227 次 |
| 最近记录: |