Freigeben über


modelldefinierte Funktion

Eine modelldefinierte Funktion ist eine Funktion, die in einem konzeptionellen Modell definiert ist. Der Textkörper einer modelldefinierten Funktion wird in Entity SQL ausgedrückt, wodurch die Funktion unabhängig von Regeln oder Sprachen ausgedrückt werden kann, die in der Datenquelle unterstützt werden.

Eine Definition für eine modelldefinierte Funktion enthält die folgenden Informationen:

  • Ein Funktionsname. (Erforderlich)

  • Der Typ des Rückgabewerts. (Optional)

    Hinweis

    Wenn kein Rückgabetyp angegeben ist, ist der Rückgabewert ungültig.

  • Parameterinformationen. (Optional)

  • Ein Entitäts-SQL-Ausdruck , der den Textkörper der Funktion definiert.

Beachten Sie, dass modelldefinierte Funktionen keine Ausgabeparameter unterstützen. Diese Einschränkung ist eingerichtet, sodass modelldefinierte Funktionen zusammengesetzt werden können.

Beispiel

Das folgende Diagramm zeigt ein konzeptionelles Modell mit drei Entitätstypen: Book, , Publisherund Author.

Screenshot eines Modells mit Veröffentlichungsdatum.

Das ADO.NET Entity Framework verwendet eine domänenspezifische Sprache (DSL), die als konzeptuelle Schemadefinitionssprache (CSDL) bezeichnet wird, um konzeptionelle Modelle zu definieren. Die folgende CSDL definiert eine Funktion im konzeptionellen Modell, die die Anzahl von Jahren zurückgibt, seit eine Instanz eines Book (im obigen Diagramm) veröffentlicht wurde.

<Function Name="GetYearsInPrint" ReturnType="Edm.Int32" >
      <Parameter Name="book" Type="BooksModel.Book" />
      <DefiningExpression>
        Year(CurrentDateTime()) - Year(cast(book.PublishedDate as DateTime))
      </DefiningExpression>
    </Function>

Siehe auch