Как определять настраиваемые функции в концептуальной модели (платформа Entity Framework)
Чтобы определить настраиваемую функцию в концептуальной модели, добавьте к концептуальной схеме на языке CSDL в EDMX-файле элемент Function, содержащий элемент DefiningExpression. Можно определить любую инструкцию Entity SQL, включая параметризованные инструкции, в элементе CommandText.
Дополнительные сведения см. в разделах DefiningExpression (CSDL) и User-Defined Functions (Entity SQL).
Определение настраиваемой функции в концептуальной модели
Следующая процедура предполагает наличие EDMX-файла, открытого в редакторе XML в Visual Studio. Процедура обеспечивает высокоуровневую структуру добавления настраиваемой функции в режим хранения. Приведенный ниже пример подробно описывает этапы данной процедуры.
Определение настраиваемой функции в концептуальной модели
В разделе содержимого концептуальной модели в EDMX-файле добавьте элемент Function в элемент Schema.
Примечание Необходимо указать возвращаемый тип для функции с помощью атрибута ReturnType. Дополнительные сведения см. в разделах Function Element (SSDL), Schema Element (SSDL) и ReturnType (CSDL).
Для каждого параметра, принимаемого функцией, добавьте элемент Parameter в элемент Function.
Примечание Параметры функции не обозначаются префиксом типа @.На них дается прямая ссылка по имени в выражении Entity SQL, определяющем функцию.Выберите имена параметров, отличных от других идентификаторов, которые будут использоваться в выражении Entity SQL. Дополнительные сведения см. в разделе Parameter Element (CSDL).
Добавьте элемент DefiningExpression в новый элемент Function.
Определите выражение Entity SQL в элементе DefiningExpression.
Сохраните изменения и закройте EDMX-файл.
Пример
Ниже приведен пример элемента Function, который можно добавить к элементу Schema в разделе содержимого концептуальной модели в EDMX-файле, чтобы определить настраиваемую функцию. Добавление этого элемента Function к модели School обеспечивает функциональные возможности для определения количества лет с момента принятия преподавателя на работу.
Дополнительные сведения о примере модели School см. в разделах Creating the School Sample Database и Generating the School Entity Data Model.
<Function Name="YearsSince" ReturnType="Edm.Int32">
<Parameter Name="date" Type="Edm.DateTime" />
<DefiningExpression>
Year(CurrentDateTime()) - Year(date)
</DefiningExpression>
</Function>
После определения функции в концептуальной модели ее можно вызвать из приложения запросом Entity SQL. Дополнительные сведения о вызове функции языка LINQ to Entities см. в разделе How to: Call Functions Defined in the Conceptual Model.
См. также
Задачи
Как добавлять определяющий запрос (платформа Entity Framework)
Как определять пользовательские функции в модели хранения (платформа Entity Framework)
Основные понятия
Конструктор моделей EDM ADO.NET
Другие ресурсы
Изменение EDMX-файла вручную (платформа Entity Framework)
Средства модели ADO.NET EDM
Calling Functions in LINQ to Entities