Выполнение хранимых процедур из DbContext
у меня есть две простые хранимые процедуры в SqlServer:
SetData(@id int, @data varchar(10))
-
GetData(@id int)
.
GetData
В настоящее время возвращает однорядный, одноколоночный результирующий набор, но при необходимости я могу изменить его на правильную функцию.
каков был бы лучший способ выполнить их из DbContext
экземпляр?
если возможно, я хотел бы избежать необходимости делать мое собственное управление состоянием соединения и / или подвергать EF-конкретным типам. Я началось с извлечения ObjectContext
и, глядя на Execute*
функции, но в документации очень плохо и не хватает примеров, связанных с хранимыми процедурами.
в идеале, я хотел бы иметь возможность сделать это:
myContext.ExecuteNonQuery("SetData", id, data);
var data = myContext.ExecuteScalar<string>("GetData", id);
1 ответов
DbContext предлагает эти функции. Использовать:
IEumerable<...> result = myContext.Database.SqlQuery<...>(...)
для выполнения хранимой процедуры извлечения и
int result = myContext.Database.ExecuteSqlCommand(...)
для выполнения хранимой процедуры изменения данных.