共用方式為


HOW TO:在儲存模型 (Entity Framework) 中定義自訂函數

您可以將包含 CommandText 項目的 Function 項目加入到 .edmx 檔案的儲存體結構定義語言 (SSDL),用這種方式在儲存模型中定義自訂函數。 CommandText 項目通常是用來提供類似預存程序所提供的功能,但是預存程序是在 .edmx 檔案中定義,不是在資料庫中定義。 您可以在 CommandText 項目中定義任何 SQL 陳述式,包括參數化陳述式。

Dd296754.note(zh-tw,VS.100).gif注意:
如同以下程序的建議,如果使用 [更新模型精靈] 來更新模型,就會複寫 .edmx 檔案中 SSDL 區段變更的部分。

在儲存模型中定義自訂函數

下列程序假設您已在 Visual Studio 的 XML 編輯器中開啟一個 .edmx 檔。 程序提供在儲存體模型中加入自訂函式的高階大綱。 程序後的範例提供關於程序步驟的詳細資訊。

若要在儲存模型中定義自訂函數

  1. Function 項目加入至 .edmx 檔 [儲存模型內容] 區段中的 Schema 項目。

    如需詳細資訊,請參閱Function Element (SSDL)Schema Element (SSDL)

  2. CommandText 項目加入至新的 Function 項目。

  3. CommandText 項目中定義 SQL 陳述式。

    此陳述式可以是參數化陳述式。

  4. 針對 SQL 查詢中的每一個參數,加入一個 Parameter 項目到 Function 項目中。 設定每一個 Parameter 項目的 NameModeType 屬性。

  5. 儲存並關閉 .edmx 檔案。

  6. ADO.NET 實體資料模型設計工具 (Entity Designer) 中開啟 .edmx file 檔案。

    剛加入的函數現在會在 [模型瀏覽器] 視窗中以預存程式的形式出現。

  7. 為這個預存程序建立 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)

概念

ADO.NET 實體資料模型設計工具

其他資源

手動編輯 .edmx 檔案 (Entity Framework)。
Entity Data Model 工具