Share via


關聯性 - EF 設計工具

注意

此頁面提供使用EF設計工具在模型中設定關聯性的相關信息。 如需 EF 中關聯性的一般資訊,以及如何使用關聯性來存取及操作數據,請參閱 關聯性與導覽屬性

關聯會定義模型中實體類型之間的關聯性。 本主題說明如何對應與 Entity Framework Designer (EF Designer) 的關聯。 下圖顯示使用 EF 設計工具時所使用的主要視窗。

EF Designer

注意

當您建置概念模型時,有關未對應的實體和關聯警告可能會出現在錯誤清單中。 您可以忽略這些警告,因為選擇從模型產生資料庫之後,錯誤將會消失。

關聯概觀

當您使用 EF 設計工具設計模型時,.edmx 檔案代表您的模型。 在 .edmx 檔案中,Association 元素會定義兩個實體類型之間的關聯性。 關聯 (Association) 必須指定關聯性 (relationship) 中的相關實體類型,以及關聯性每一端可能的實體類型數量 (也就是「多重性」)。 關聯端的乘數可以有一個值(1)、零或一個 (0..1),或多個 。。 這項資訊是在兩個子 End 元素中指定。

在運行時間,您可以透過導覽屬性或外鍵來存取關聯一端的實體類型實例(如果您選擇在實體中公開外鍵)。 公開外鍵時,實體之間的關聯性會使用 ReferentialConstraint 元素來管理(Association 元素的子元素)。 建議您一律公開實體中關聯性的外鍵。

注意

在多對多(*:*)中,您無法將外鍵新增至實體。 在 *:* 關聯性中,關聯資訊是使用獨立物件來管理。

如需 CSDL 元素的相關信息(ReferentialConstraintAssociation 等等),請參閱 CSDL 規格

建立和刪除關聯

建立與EF Designer 的關聯會更新 .edmx 檔案的模型內容。 建立關聯之後,您必須建立關聯對應(本主題稍後討論)。

注意

本節假設您已新增想要在模型之間建立關聯之實體。

建立關聯

  1. 以滑鼠右鍵按兩下設計介面的空白區域,指向 [ 新增],然後選取 [ 關聯...]。

  2. 在 [新增關聯] 對話框中填入關聯設定。

    Add Association

    注意

    您可以選擇不將導覽屬性或外鍵屬性新增至關聯結尾的實體,方法是清除 [導覽屬性] 和 [將外鍵屬性新增至 <實體類型名稱> Entity **] 複選框。 如果您只加入一個導覽屬性,則關聯只能單向周遊。 如果不加入任何導覽屬性,您必須選擇加入外部索引鍵屬性,才能存取關聯 End 的實體。

  3. 按一下 [確定]

若要刪除關聯

若要刪除關聯,請執行下列其中一項動作:

  • 以滑鼠右鍵按兩下 EF Designer 介面上的關聯,然後選取 [ 刪除]。

  • 或-

  • 選取一個或多個關聯,然後按下 DELETE 鍵。

在您的實體中包含外鍵屬性(引用條件約束)

建議您一律公開實體中關聯性的外鍵。 Entity Framework 會使用引用條件約束來識別屬性作為關聯性的外鍵。

如果您在建立關聯性時核取 [ 將外鍵屬性新增至 <實體類型名稱> 實體 ] 複選框,則會為您新增此引用條件約束。

當您使用 EF Designer 新增或編輯引用條件約束時,EF Designer 會在 .edmx 檔案的 CSDL 內容中新增或修改 ReferentialConstraint 元素。

  • 按兩下您要編輯的關聯。 [ 參考條件約束 ] 對話框隨即出現。

  • 從 [ 主體 ] 下拉式清單中,選取引用條件約束中的主體實體。 實體的索引鍵屬性會新增至對話方塊中的 [主體金鑰 ] 清單。

  • 從 [ 相依 ] 下拉式清單中,選取引用條件約束中的相依實體。

  • 對於具有相依金鑰的每個主體金鑰,請從 [相依金鑰] 資料行的 下拉式清單中選取對應的相依金鑰

    Ref Constraint

  • 按一下 [確定]

建立和編輯關聯對應

您可以在 EF Designer 的 [ 對應詳細 資料] 視窗中,指定關聯如何對應至資料庫。

注意

您只能對應未指定引用條件約束之關聯的詳細數據。 如果指定了引用條件約束,則實體中會包含外鍵屬性,而且您可以使用實體的對應詳細數據來控制外鍵所對應的數據行。

建立關聯對應

  • 以滑鼠右鍵按兩下設計介面中的關聯,然後選取 [ 資料表對應]。 這會在 [ 對應詳細 數據] 視窗中顯示關聯對應。

  • 按兩下 [新增數據表] 或 [ 檢視]。 包含儲存體模型中所有資料表的下拉式清單便會出現。

  • 選取此關聯將要對應的資料表。 [ 對應詳細數據 ] 視窗會顯示關聯兩端,以及每個 End 實體類型的索引鍵屬性。

  • 針對每個索引鍵屬性,按兩下 [ 資料行 ] 字段,然後選取屬性將對應的數據行。

    Mapping Details 4

編輯關聯對應

  • 以滑鼠右鍵按兩下設計介面中的關聯,然後選取 [ 資料表對應]。 這會在 [ 對應詳細 數據] 視窗中顯示關聯對應。
  • 按兩下 [資料表名稱>] 地圖<。 包含儲存體模型中所有資料表的下拉式清單便會出現。
  • 選取此關聯將要對應的資料表。 [ 對應詳細數據 ] 視窗會顯示關聯兩端,以及每個 End 實體類型的索引鍵屬性。
  • 針對每個索引鍵屬性,按兩下 [ 資料行 ] 字段,然後選取屬性將對應的數據行。

編輯和刪除導覽屬性

導覽屬性是用來在模型中關聯結尾尋找實體的快捷方式屬性。 當您在兩個實體類型之間建立關聯時,可以建立導覽屬性。

編輯導覽屬性

  • 選取 EF Designer 介面上的導覽屬性。 導覽屬性的相關信息會顯示在 Visual Studio 屬性 視窗中。
  • 變更 [屬性] 視窗中的屬性設定

若要刪除導覽屬性

  • 如果未在概念模型中的實體類型上公開外部索引鍵,刪除導覽屬性可能會使對應的關聯只能單向周遊,或者完全不能周遊。
  • 以滑鼠右鍵按兩下 EF Designer 介面上的導覽屬性,然後選取 [ 刪除]。