2012-01-22 37 views
12

È stato rilevato un errore "Impossibile risolvere il simbolo ObjectStateManager" quando si tenta di richiamarlo nel contesto del database da Entity Framework 4. Non riesco a trovare nessun altro che abbia questo problema. Ho provato a utilizzare System.Data e System.Data.Objects.Impossibile risolvere Symbol ObjectStateManager

Esiste un Entity Framework specifico che deve essere creato per utilizzare ObjectStateManager? O mi manca una sorta di pacchetto di installazione? Sto usando Database First Entity Framework.

Qui è il codice che sta dando il mio errore: (linea 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"); 
     } 

risposta

28

Sono sicuro che hai trovato una soluzione per ora, ma ho incontrato lo stesso problema solo ora ed è riuscito a risolverlo cambiando il linea EntityState al seguente:

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

Aggiornato da EF5 a EF6 e questo ha funzionato per me. – sobelito

0

Avete aggiunto l'assemblea System.Data.Entity al progetto?

Anche System.Data.Objects è corretto.

+0

Poiché utilizzo Resharper, si dice che entrambi non vengono utilizzati anche se vengono aggiunti. – Rizowski

13

Probabilmente si sta utilizzando il codice EF prima. In questo caso è necessario ripristinare il vostro codice per implemenatation esplicita di IObjectContextAdapter, cioè

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

Sto usando Database First, sono triste nel dire che non ha funzionato neanche. – Rizowski

+0

Sto usando EF 5.0 e questo ha funzionato per me –

+0

Grazie, questo ha funzionato per me. Avevo anche bisogno di aggiungere lo spazio dei nomi: System.Data.Entity.Infrastructure; – Cesar

0

Un elemento aggiuntivo per verificare è che il framework di destinazione .net per il progetto è impostato su .net 4+.

+0

Può essere pubblicato come commento o essere più specifico. – DontVoteMeDown

Problemi correlati