HOW TO:在儲存模型 (Entity Framework) 中定義自訂函數
您可以將包含 CommandText 項目的 Function 項目加入到 .edmx 檔案的儲存體結構定義語言 (SSDL),用這種方式在儲存模型中定義自訂函數。 CommandText 項目通常是用來提供類似預存程序所提供的功能,但是預存程序是在 .edmx 檔案中定義,不是在資料庫中定義。 您可以在 CommandText 項目中定義任何 SQL 陳述式,包括參數化陳述式。
![]() |
---|
如同以下程序的建議,如果使用 [更新模型精靈] 來更新模型,就會複寫 .edmx 檔案中 SSDL 區段變更的部分。 |
在儲存模型中定義自訂函數
下列程序假設您已在 Visual Studio 的 XML 編輯器中開啟一個 .edmx 檔。 程序提供在儲存體模型中加入自訂函式的高階大綱。 程序後的範例提供關於程序步驟的詳細資訊。
若要在儲存模型中定義自訂函數
將 Function 項目加入至 .edmx 檔 [儲存模型內容] 區段中的 Schema 項目。
如需詳細資訊,請參閱Function Element (SSDL) 和 Schema Element (SSDL)。
將 CommandText 項目加入至新的 Function 項目。
在 CommandText 項目中定義 SQL 陳述式。
此陳述式可以是參數化陳述式。
針對 SQL 查詢中的每一個參數,加入一個 Parameter 項目到 Function 項目中。 設定每一個 Parameter 項目的 Name、Mode 和 Type 屬性。
儲存並關閉 .edmx 檔案。
在 ADO.NET 實體資料模型設計工具 (Entity Designer) 中開啟 .edmx file 檔案。
剛加入的函數現在會在 [模型瀏覽器] 視窗中以預存程式的形式出現。
為這個預存程序建立 FunctionImport。 如需詳細資訊,請參閱 HOW TO:匯入預存程序。
範例
以下提供 Function 項目的範例,您可以將此項目加入至 .edmx 檔 [儲存模型內容] 區段中的 Schema 項目,以定義自訂函式。 將這個 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,您必須在概念模型中建立對應的函數匯入。 如需詳細資訊,請參閱 HOW TO:匯入預存程序。
另請參閱
工作
HOW TO:加入定義查詢 (Entity Framework)