2012-01-22 16 views
12

我试图在Entity Framework 4的数据库上下文中调用它时遇到“无法解析符号ObjectStateManager”的错误。我找不到其他人遇到此问题。我尝试过使用System.DataSystem.Data.Objects无法解析符号ObjectStateManager

是否存在为了使用ObjectStateManager而需要创建的特定实体框架?还是我缺少某种安装包?我正在使用数据库第一实体框架。

这里是代码它给我的错误:(7号线)

[HttpPost] 
     public ActionResult EditProfile(User user) 
     { 
      if (ModelState.IsValid) 
      { 
       db.Users.Attach(user); 
       db.ObjectStateManager.ChangeObjectState(user, EntityState.Modified); 
       db.SaveChanges(); 
      } 
      return RedirectToAction("Profile"); 
     } 

回答

28

我相信你找到一个解决方案通过,但现在我刚才碰到了同样的问题,并能够通过改变来解决它EntityState线以下:

db.Entry(user).State = EntityState.Modified; 
+2

从EF5升级到EF6,这对我有用。 – sobelito

0

你添加了System.Data.Entity装配到项目?

另外System.Data.Objects是正确的。

+0

由于我使用的是Resharper,它表示两个都没有被使用,即使它们被添加。 – Rizowski

13

可能您使用的是代码优先EF。在这种情况下,你必须恢复你的代码IObjectContextAdapter明确implemenatation,即

((IObjectContextAdapter)db).ObjectContext.ObjectStateManager 
+1

我使用数据库第一,我很伤心地说,也没有工作。 – Rizowski

+0

我正在使用EF 5.0,这对我有用 –

+0

谢谢,这对我很有用。我还需要添加命名空间:System.Data.Entity.Infrastructure; – Cesar

0

一个额外的项目,检查的是该项目的目标.NET框架设置为.NET 4+。

+0

这可能会发布为评论,或更具体。 – DontVoteMeDown