2011-12-28 6 views
23

Desidero utilizzare la funzione ExecuteStoreQuery di Entity Framework e mi sono chiesto che la mia variabile di contesto non avesse il metodo ExecuteStoreQuery.ExecuteStoreQuery con Dbcontext

Quindi, ho scoperto che è un metodo di classe ObjectContext, ma ho già utilizzato DbContext per la mia applicazione. Ho semplicemente provato a cambiare DbContext con ObjectContext, ma ha riportato alcuni errori (ad esempio, in ObjectContext non è il metodo OnModelCreating).

Come è possibile utilizzare ExecuteStoreQuery con DbContext e, se non è possibile, esistono alternative di ExecuteStoreQuery in DbContext?

risposta

37

A DbContext è semplicemente un wrapper attorno allo ObjectContext.

È possibile comunque accedere all'originale ObjectContext utilizzando IObjectContextAdapter

(dbContext as IObjectContextAdapter).ObjectContext; 
+0

Io uso questo metodo con successo nella mia applicazione. – Hammerstein

34

voglio aggiungere che credo che ormai il metodo corretto è:

dbContext.Database.SqlQuery<T>(string sql); 
+1

Se si desidera tenere traccia delle modifiche agli oggetti restituiti, è necessario considerare dbContext.tablename.SqlQuery (...) dove tablename è il nome della raccolta. (ad esempio un DbSet) –

Problemi correlati