Выполнение хранимых процедур из DbContext - PullRequest
8 голосов
/ 08 июня 2011

У меня есть две простые хранимые процедуры в 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 Ответ

22 голосов
/ 08 июня 2011

DbContext предлагает эти функции. Использование:

IEumerable<...> result = myContext.Database.SqlQuery<...>(...)

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

int result = myContext.Database.ExecuteSqlCommand(...)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...