Как вызвать хранимую процедуру в MVC по EF - PullRequest
11 голосов
/ 02 июня 2011

Где я могу получить хороший учебник по платформе Entity с хранимой процедурой в платформе MVC?

Лучше ли использовать библиотеку Enterprise в этом случае, когда у меня почти все написано в хранимой процедуре.

Примечание: я использую хранимые процедуры, потому что они действительно очень сложны, а некоторые из них содержат более 1000 строк.

Ответы [ 3 ]

41 голосов
/ 03 июня 2011

MVC в этом случае абсолютно не связан. Способ вызова хранимой процедуры из EF останется прежним. Я предполагаю, что вы хотите использовать хранимые процедуры без фактического использования сущностей и linq-to-entity (основных функций EF), не так ли? Как правило, вам нужно:

  • EDMX-файл (модель данных сущности ado.net), в котором вы запускаете обновление из базы данных и добавляете все хранимые процедуры, которые хотите использовать. Файл EDMX также генерирует производные ObjectContext и все объекты по умолчанию.
  • Далее необходимо перейти к Обозреватель моделей и создать функцию импорта для каждой процедуры. Функция импорта создаст метод для производного ObjectContext, который позволит вам вызывать хранимую процедуру, как и любой другой метод .net.
  • Во время импорта функции вам нужно будет создать сложный тип (это может произойти автоматически) для набора результатов, возвращенного из хранимой процедуры.

Вам также не нужно использовать импорт функций вообще, а вы можете выполнять процедуры напрямую , вызывая либо:

  • objectContext.ExecuteSqlCommand("storedProcedureName", SqlParameters) для SP, не возвращающих набор записей
  • objectContext.ExecuteStoreQuery<ResultType>("storedProcedureName", SqlParameters) для SP, возвращающих набор записей. ResultType должен иметь свойства с такими же именами, что и столбцы в наборе результатов. Может работать только с плоскими типами (без вложенных объектов).

Существуют некоторые ограничения при использовании хранимых процедур:

  • Структуре сущностей не нравятся хранимые процедуры, которые возвращают динамические наборы результатов (на основании некоторого набора результатов условий есть разные столбцы)
  • Entity Framework не поддерживает хранимые процедуры, возвращающие несколько результирующих наборов - есть EFExtensions , которые делают, но это больше похоже на непосредственное выполнение ADO.NET.
1 голос
/ 17 октября 2015

Если вы используете Entityframwork Code-first, таким образом вы можете использовать хранимую процедуру, в этом примере у меня есть четыре параметра ввода.

0 голосов
/ 26 марта 2016
store = "sp_selectmark @regid='" + id + "'";
var st = db.ExecuteStoreQuery<Sp>("exec " + store).ToList();
GridView1.DataSource = st;
GridView1.DataBind();

или

string store = "";
store = "sp_inserttbreg @name='" + regobj.name + "',@age='" + regobj.age + "',@place='" + regobj.place + "',@gender='" + regobj.gender + "',@email='" + regobj.email + "',@fon='" + regobj.fon + "'";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...