2012-01-22 5 views
12

Występuje błąd "Nie można rozwiązać Symbol ObjectStateManager" podczas próby wywołania go w kontekście bazy danych z Entity Framework 4. Nie mogę znaleźć nikogo innego posiadającego ten problem. Próbowałem użyć System.Data i System.Data.Objects.Nie można rozwiązać Symbol ObjectStateManager

Czy istnieje potrzeba zdefiniowania konkretnego Podmiotu, aby móc korzystać z ObjectStateManager? Czy też brakuje jakiegoś pakietu instalacyjnego? Używam Database First Entity Framework.

Oto kod to daje mój błąd: (linia 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"); 
     } 

Odpowiedz

28

Jestem pewien, że znalazł rozwiązanie teraz ale wpadłem na tej samej kwestii właśnie teraz i był w stanie go rozwiązać przez zmianę linia EntityState na następujące kwestie:

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

Uaktualniono z EF5 do EF6, a to działało dla mnie. – sobelito

0

Czy dodano zespół do projektu System.Data.Entity?

Również jest poprawna System.Data.Objects.

+0

Ponieważ używam Resharpera, oznacza to, że oba nie są używane, mimo że są dodawane. – Rizowski

13

Prawdopodobnie używasz kodu pierwszy EF. W tym przypadku trzeba przywrócić Yours kod do wyraźnej implemenatation z IObjectContextAdapter, tj

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

Używam bazy danych Najpierw jestem smutny, że nie działa. – Rizowski

+0

Używam EF 5.0 i to działało dla mnie –

+0

Dzięki, to działało dla mnie. Potrzebowałem również dodać przestrzeń nazw: System.Data.Entity.Infrastructure; – Cesar

0

Jeden dodatkowy element do sprawdzenia jest, że ramy dla .net cel projektu jest ustawiony na .net 4+.

+0

Można to opublikować jako komentarz lub dokładniej. – DontVoteMeDown