Выполнение хранимых процедур из 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(...)

для выполнения хранимой процедуры изменения данных.