que tienen dos procedimientos simples almacenados en SqlServer:Ejecución de procedimientos almacenados desde un DbContext
SetData(@id int, @data varchar(10))
GetData(@id int)
.
GetData
actualmente devuelve un conjunto de resultados de una sola fila y una sola columna, pero podría cambiarlo para que sea una función adecuada si es necesario.
¿Cuál sería la mejor forma de ejecutar esto desde una instancia de DbContext
?
De ser posible, me gustaría evitar tener que hacer mi propia gestión de estado de conexión y/o exponer tipos específicos de EF. Comencé recuperando el ObjectContext
y mirando las funciones Execute*
, pero la documentación es bastante mala y carece de ejemplos que impliquen procedimientos almacenados.
Idealmente, me gustaría ser capaz de hacer esto:
myContext.ExecuteNonQuery("SetData", id, data);
var data = myContext.ExecuteScalar<string>("GetData", id);
¿Qué hay de los parámetros? ¿Tengo que hacerlo como se especifica aquí o hay un atajo? http://stackoverflow.com/questions/4873607/how-to-use-dbcontext-database-sqlquerytelementsql-params-with-stored-procedu/4874600#4874600 –
Esa es una manera. También debería funcionar sin usar 'SqlParameter', solo pasar valores. No estoy seguro si no tiene que referirse a ellos por @ p0, @ p1, etc. cuando usa valores directamente. –
Terminé pasando un objeto anónimo y convirtiéndolo a SqlParameters internamente. –