Ho due stored procedure semplici in SqlServer:Esecuzione di stored procedure da un DbContext
SetData(@id int, @data varchar(10))
GetData(@id int)
.
GetData
restituisce attualmente un set di risultati a riga singola, a colonna singola, ma potrei cambiarlo per essere una funzione corretta se necessario.
Quale sarebbe il modo migliore per eseguirli da un'istanza DbContext
?
Se possibile, mi piacerebbe evitare di dover gestire da solo la gestione dello stato e/o esporre tipi specifici di EF. Ho iniziato recuperando ObjectContext
e osservando le funzioni Execute*
, ma la documentazione è piuttosto scadente e mancano esempi che coinvolgono stored procedure.
Idealmente, mi piacerebbe essere in grado di fare questo:
myContext.ExecuteNonQuery("SetData", id, data);
var data = myContext.ExecuteScalar<string>("GetData", id);
E i parametri? Devo farlo come specificato qui o c'è una scorciatoia? http://stackoverflow.com/questions/4873607/how-to-use-dbcontext-database-sqlquerytelementsql-params-with-stored-procedu/4874600#4874600 –
Questo è un modo. Dovrebbe funzionare anche senza usare 'SqlParameter' - basta passare i valori. Non sono sicuro che non sia necessario farvi riferimento da @ p0, @ p1, ecc. Quando si utilizzano direttamente i valori. –
Ho finito per passare un oggetto anonimo e convertirlo internamente in SqlParameters. –