Ho deciso di spostare uno dei miei progetti in Entity Framework 7 (rc1-final). Sono destinato a SQL Server e viene installato anche il pacchetto EntityFramework.MicrosoftSqlServer
.È possibile eseguire query SQL personalizzate utilizzando EF7
Ho un solo problema: sembra che non sia possibile eseguire query SQL personalizzate per recuperare alcuni oggetti dal DB.
DatabaseFacade
oggetto (a cui si accede tramite DbContext.Database
struttura) fornisce un metodo di estensione ExecuteSqlCommand
(che restituisce nulla), ma non fornisce SqlQuery<T>
metodo che consenta di recuperare oggetti. Entrambi i metodi erano disponibili nel vecchio EF 6, ma il nuovo EF 7 dichiara solo il primo.
Quindi, il metodo SqlQuery<T>
è ancora qui (ma spostato/rinominato) oppure è stato completamente rimosso dalla nuova implementazione EF?
Ovviamente è assolutamente possibile risolverlo in modo dettagliato (utilizzando SqlCommand
e il suo metodo ExecuteReader
) ma preferisco evitarlo.
Grazie, ma sapere che il metodo già, ma, purtroppo, ha bisogno di IQueryable come parametro di input. Come ho capito, questo metodo dovrebbe essere usato insieme ad alcuni DbSet che, a loro volta, dovrebbero essere definiti all'interno di DbContext. Il mio caso è leggermente diverso: voglio ottenere oggetti che non sono presenti nel mio DbContext (ad esempio, esegui la query e creo l'oggetto di tipo T per ogni riga restituita). –
In tal caso basta usare il SqlCommand sottostante come in [questa risposta] (http://stackoverflow.com/a/34191033/469777). –
Attualmente sto usando questo approccio ora (Command + ExecuteReader). È prolisso in confronto a SqlQuery mancante, ma ovviamente funziona. A proposito, grazie per il vostro tempo e per la vostra risposta - è sicuramente utile - apprezzatelo. –