Применение хранимых процедур в Entity Framework | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 30 ноября, печатный экземпляр отправим 4 декабря.

Опубликовать статью в журнале

Авторы: ,

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №11 (145) март 2017 г.

Дата публикации: 18.03.2017

Статья просмотрена: 492 раза

Библиографическое описание:

Бакаев, И. И. Применение хранимых процедур в Entity Framework / И. И. Бакаев, Т. Р. Шафиев. — Текст : непосредственный // Молодой ученый. — 2017. — № 11 (145). — С. 36-38. — URL: https://moluch.ru/archive/145/40559/ (дата обращения: 18.11.2024).



Entity Framework имеет возможность автоматически строить собственные команды для базы данных на основе LINQ to Entities или запросов Entity SQL, а также, строить этих команд для вставки, обновления или удаления данных.

Вы можете переопределить эти команды и использовать свои собственные предопределенные хранимые процедуры. А также можете использовать хранимые процедуры либо для получения данных или добавления / обновления / удаления записей в одной или нескольких таблиц базы данных. [1]

Хранимая процедура представляет собой оформленный особым образом сценарий (вернее, пакет), который хранится в базе данных, а не в отдельном файле. Хранимые процедуры отличаются от сценариев тем, что в них допускается использование входных и выходных параметров, а также возвращаемых значений, которые фактически не могут использоваться в обычном сценарии.

Основным языком программирования для СУБД SQL SERVER продолжает оставаться T-SQL, который не обеспечивает такую же поддержку разносторонних способов управления ходом выполнения программы, как процедурные языке наподобие C, C++, Visual Basic, Java, Delphi и т. д. Однако T-SQL становится буквально непревзойденным, когда с его помощью осуществляются операции определения данных, манипулирования данными и доступа к данным, а предусмотренные в нем процедурные конструкции позволяют вполне успешно решать большинство практических задач. [2]

Хранимые процедуры и определяемые пользователем функции (UDF) в базе данных представлены в виде функций в рамках сущности. EDM не будет иметь какой-либо объект для хранимых процедур в дизайнере EDM. [1]

Здесь мы добавим следующую хранимую процедуру StudentByGroupId в EDM. Эта процедура возвращает всех студентов, которые назначены для конкретной группы:

CREATE PROCEDURE [dbo].[StudentByGroupId]

@GId int = null

-- Здесь добавлять параметры процедуры

AS

BEGIN

SET NOCOUNT ON;

SELECT s.Id, s.sname,s.GroupId,g.gname

from Student s Inner Join GroupStudent g ON s.GroupId=g.Id

where s.GroupId=@GId

END

Во-первых, создайте новую модель данных объекта ADO.Net, используя EF Designer from database.

Выберите StudentByGroupId. Убедитесь, что Import selected stored procedures and functions into the entity model установлен флажок, а затем нажмите кнопку Finish.

Вы увидите StudentByGroupId добавлен в Function Imports с новым сложным типом StudentByGroupId _Result в Model Browser. Всякий раз, когда вы импортируйте хранимую процедуру в модель, она создает новый сложный тип с именем {sp name} _Result по умолчанию. [3]

Рис 1. Окно Model Browser

StudentByGroupId возвращает те же поля, определенные в сущности студент. Таким образом, нам не нужно добавлять новый сложный тип возвращаемых данных из StudentByGroupId. Вы можете изменить его, щелкнув правой кнопкой мыши на StudentByGroupId импорта функций и нажмите Edit. Проверьте Entities и выберите из выпадающего списка Student в всплывающем окне, как показано ниже [3, c. 237]

Рис 2. Окно Edit Function Import

Теперь StudentByGroupId может быть вызван и результат, показанный ниже, будут возвращены:

public ActionResult Index()

{ var context = new StudentDateBaseEntities();

var student = context.StudentByGroupId(1);

return View(student.ToList()); }

Код, показанный выше, выполнит следующий оператор:

Exec [DBO]. [StudentByGroupId] @ GId = 1

Литература:

  1. Julia Lerman. Programming Entity Framework, Second Edition. 2010. Printed in the United States of America.
  2. Виейра, Роберт. Программирование баз данных Microsoft SQL Server 2005. Базовый курс: Пер. с англ. — М.: ООО “И. Д. Вильямс”, 2007. — 832с.: ил. — Парал. тит. англ.
  3. Julia Lerman, Rowan Miller. Programming Entity Framework: DbContext. 2012. Printed in the United States of America.
  4. Tom Dykstra, Rick Anderson. Getting Started with Entity Framework 6 Code First using MVC 5. 2014.
Основные термины (генерируются автоматически): EDM, SQL, T-SQL, баз данных, сложный тип, хранимая процедура, BEGIN, CREATE, DBO, END.


Задать вопрос