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

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

Дополнительные сведения см. в разделах DefiningExpression (CSDL) и User-Defined Functions (Entity SQL).

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

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

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

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

    Dd456812.note(ru-ru,VS.100).gifПримечание
    Необходимо указать возвращаемый тип для функции с помощью атрибута ReturnType.

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

  2. Для каждого параметра, принимаемого функцией, добавьте элемент Parameter в элемент Function.

    Dd456812.note(ru-ru,VS.100).gifПримечание
    Параметры функции не обозначаются префиксом типа @.На них дается прямая ссылка по имени в выражении Entity SQL, определяющем функцию.Выберите имена параметров, отличных от других идентификаторов, которые будут использоваться в выражении Entity SQL.

    Дополнительные сведения см. в разделе Parameter Element (CSDL).

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

  4. Определите выражение Entity SQL в элементе DefiningExpression.

  5. Сохраните изменения и закройте 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