HOW TO:在概念模型中定義自訂函式 (Entity Framework)
您可以在概念模型中定義自訂函式,方法是將包含 DefiningExpression 項目的 Function 項目加入至 .edmx 檔的概念結構定義語言 (CSDL) 中。 您可以在 CommandText 項目中定義任何 Entity SQL 陳述式,包括參數化陳述式。
如需詳細資訊,請參閱 DefiningExpression (CSDL) 和User-Defined Functions (Entity SQL)。
在概念模型中定義自訂函式
下列程序假設您已在 Visual Studio 的 XML 編輯器中開啟一個 .edmx 檔。 程序提供在儲存體模型中加入自訂函式的高階大綱。 程序後的範例提供關於程序步驟的詳細資訊。
在概念模型中定義自訂函式
將 Function 項目加入至 .edmx 檔 [概念模型內容] 區段中的 Schema 項目。
注意: 您必須使用 ReturnType 屬性指定函式的傳回型別。 如需詳細資訊,請參閱Function Element (SSDL)、Schema Element (SSDL) 和 ReturnType (CSDL)。
針對函式所接受的每個參數,將 Parameter 項目加入至 Function 項目。
注意: 函式參數不會加註 @ 之類的前置詞,在定義該函式的 Entity SQL 運算式中,會直接按名稱參考這些參數。您選擇的參數名稱必須不同於您在 Entity SQL 運算式中需使用之其他識別項的參數名稱。 如需詳細資訊,請參閱 Parameter Element (CSDL)。
將 DefiningExpression 項目加入至新的 Function 項目。
在 DefiningExpression 項目中定義 Entity SQL 陳述式。
儲存並關閉 .edmx 檔案。
範例
以下提供 Function 項目的範例,您可以將此項目加入至 .edmx 檔 [概念模型內容] 區段中的 Schema 項目,以定義自訂函式。 將此 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。
另請參閱
工作
HOW TO:加入定義查詢 (Entity Framework)
HOW TO:在儲存模型 (Entity Framework) 中定義自訂函數
概念
其他資源
手動編輯 .edmx 檔案 (Entity Framework)。
Entity Data Model 工具
Calling Functions in LINQ to Entities