Поделиться через


Как определять пользовательские функции в модели хранения (платформа Entity Framework)

Чтобы определить пользовательскую функцию в модели хранения, добавьте к схеме хранения на языке SSDL в EDMX-файле элемент Function, содержащий элемент CommandText. Элемент CommandText часто используется для реализации функций, аналогичных тем, которые обеспечивают хранимые процедуры, хотя последние определяются в EDMX-файле, а не в базе данных. Любые инструкции SQL, включая параметризованные, можно определить в элементе CommandText.

Dd296754.note(ru-ru,VS.100).gifПримечание
Изменения, сделанные в разделе SSDL EDMX-файла, согласно описанной ниже процедуре, будут переписаны мастером обновления модели при ее обновлении.

Определение пользовательской функции в модели хранения

Следующая процедура предполагает наличие EDMX-файла, открытого в редакторе XML в Visual Studio. Процедура обеспечивает высокоуровневую структуру добавления настраиваемой функции в режим хранения. Приведенный ниже пример подробно описывает этапы данной процедуры.

Определение пользовательской функции в модели хранения

  1. Добавьте элемент Function к элементу Schema в разделе содержимого модели хранения в EDMX-файле.

    Дополнительные сведения см. в разделах Function Element (SSDL) и Schema Element (SSDL).

  2. Добавьте элемент CommandText в новый элемент Function.

  3. Определите инструкцию SQL в элементе CommandText.

    Инструкция может быть параметризованной.

  4. Для каждого параметра в запросе SQL добавьте элемент Parameter в элемент Function. Задайте атрибуты Name, Mode и Type для каждого элемента Parameter.

  5. Сохраните изменения и закройте EDMX-файл.

  6. Откройте EDMX-файл в конструкторе моделей EDM ADO.NET (конструкторе сущностей).

    Вновь добавленная функция теперь появится в виде хранимой процедуры в окне обозревателя модели.

  7. Создайте FunctionImport для хранимой процедуры. Дополнительные сведения см. в разделе Как импортировать хранимую процедуру (средства работы с моделью EDM).

Пример

Ниже приведен пример элемента Function, который может быть добавлен к элементу Schema в разделе содержимого модели хранения в EDMX-файле, чтобы определить пользовательскую функцию. Добавление этого элемента Function к модели School обеспечивает функциональные возможности для обновления распределения аудиторий для конкретного преподавателя. Дополнительные сведения о примере модели School см. в разделе Quickstart (Entity Framework).

<Function Name="UpdateOfficeAssignment" IsComposable="false">
  <CommandText>
    UPDATE OfficeAssignment
    SET Location = @location
    WHERE InstructorID = @id;
  </CommandText>
  <Parameter Name="location"
             Mode="In"
             Type="nvarchar"/>
  <Parameter Name="id"
             Mode="In"
             Type="int"/>
</Function>

Чтобы эта функция была доступна в ObjectContext, необходимо создать соответствующий импорт функции в концептуальной модели. Дополнительные сведения см. в разделе Как импортировать хранимую процедуру (средства работы с моделью EDM).

См. также

Задачи

Как добавлять определяющий запрос (платформа Entity Framework)

Основные понятия

Конструктор моделей EDM ADO.NET

Другие ресурсы

Изменение EDMX-файла вручную (платформа Entity Framework)
Средства модели ADO.NET EDM