Как определять пользовательские функции в модели хранения (платформа Entity Framework)
Чтобы определить пользовательскую функцию в модели хранения, добавьте к схеме хранения на языке SSDL в EDMX-файле элемент Function, содержащий элемент CommandText. Элемент CommandText часто используется для реализации функций, аналогичных тем, которые обеспечивают хранимые процедуры, хотя последние определяются в EDMX-файле, а не в базе данных. Любые инструкции SQL, включая параметризованные, можно определить в элементе CommandText.
Примечание |
---|
Изменения, сделанные в разделе SSDL EDMX-файла, согласно описанной ниже процедуре, будут переписаны мастером обновления модели при ее обновлении. |
Определение пользовательской функции в модели хранения
Следующая процедура предполагает наличие EDMX-файла, открытого в редакторе XML в Visual Studio. Процедура обеспечивает высокоуровневую структуру добавления настраиваемой функции в режим хранения. Приведенный ниже пример подробно описывает этапы данной процедуры.
Определение пользовательской функции в модели хранения
Добавьте элемент Function к элементу Schema в разделе содержимого модели хранения в EDMX-файле.
Дополнительные сведения см. в разделах Function Element (SSDL) и Schema Element (SSDL).
Добавьте элемент CommandText в новый элемент Function.
Определите инструкцию SQL в элементе CommandText.
Инструкция может быть параметризованной.
Для каждого параметра в запросе SQL добавьте элемент Parameter в элемент Function. Задайте атрибуты Name, Mode и Type для каждого элемента Parameter.
Сохраните изменения и закройте EDMX-файл.
Откройте EDMX-файл в конструкторе моделей EDM ADO.NET (конструкторе сущностей).
Вновь добавленная функция теперь появится в виде хранимой процедуры в окне обозревателя модели.
Создайте 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