關聯性 - EF 設計工具
注意
此頁面提供使用EF設計工具在模型中設定關聯性的相關信息。 如需 EF 中關聯性的一般資訊,以及如何使用關聯性來存取及操作數據,請參閱 關聯性與導覽屬性。
關聯會定義模型中實體類型之間的關聯性。 本主題說明如何對應與 Entity Framework Designer (EF Designer) 的關聯。 下圖顯示使用 EF 設計工具時所使用的主要視窗。
注意
當您建置概念模型時,有關未對應的實體和關聯警告可能會出現在錯誤清單中。 您可以忽略這些警告,因為選擇從模型產生資料庫之後,錯誤將會消失。
關聯概觀
當您使用 EF 設計工具設計模型時,.edmx 檔案代表您的模型。 在 .edmx 檔案中,Association 元素會定義兩個實體類型之間的關聯性。 關聯 (Association) 必須指定關聯性 (relationship) 中的相關實體類型,以及關聯性每一端可能的實體類型數量 (也就是「多重性」)。 關聯端的乘數可以有一個值(1)、零或一個 (0..1),或多個 。。 這項資訊是在兩個子 End 元素中指定。
在運行時間,您可以透過導覽屬性或外鍵來存取關聯一端的實體類型實例(如果您選擇在實體中公開外鍵)。 公開外鍵時,實體之間的關聯性會使用 ReferentialConstraint 元素來管理(Association 元素的子元素)。 建議您一律公開實體中關聯性的外鍵。
注意
在多對多(*:*)中,您無法將外鍵新增至實體。 在 *:* 關聯性中,關聯資訊是使用獨立物件來管理。
如需 CSDL 元素的相關信息(ReferentialConstraint、Association 等等),請參閱 CSDL 規格。
建立和刪除關聯
建立與EF Designer 的關聯會更新 .edmx 檔案的模型內容。 建立關聯之後,您必須建立關聯對應(本主題稍後討論)。
注意
本節假設您已新增想要在模型之間建立關聯之實體。
建立關聯
以滑鼠右鍵按兩下設計介面的空白區域,指向 [ 新增],然後選取 [ 關聯...]。
在 [新增關聯] 對話框中填入關聯設定。
注意
您可以選擇不將導覽屬性或外鍵屬性新增至關聯結尾的實體,方法是清除 [導覽屬性] 和 [將外鍵屬性新增至 <實體類型名稱> Entity **] 複選框。 如果您只加入一個導覽屬性,則關聯只能單向周遊。 如果不加入任何導覽屬性,您必須選擇加入外部索引鍵屬性,才能存取關聯 End 的實體。
按一下 [確定]。
若要刪除關聯
若要刪除關聯,請執行下列其中一項動作:
以滑鼠右鍵按兩下 EF Designer 介面上的關聯,然後選取 [ 刪除]。
或-
選取一個或多個關聯,然後按下 DELETE 鍵。
在您的實體中包含外鍵屬性(引用條件約束)
建議您一律公開實體中關聯性的外鍵。 Entity Framework 會使用引用條件約束來識別屬性作為關聯性的外鍵。
如果您在建立關聯性時核取 [ 將外鍵屬性新增至 <實體類型名稱> 實體 ] 複選框,則會為您新增此引用條件約束。
當您使用 EF Designer 新增或編輯引用條件約束時,EF Designer 會在 .edmx 檔案的 CSDL 內容中新增或修改 ReferentialConstraint 元素。
按兩下您要編輯的關聯。 [ 參考條件約束 ] 對話框隨即出現。
從 [ 主體 ] 下拉式清單中,選取引用條件約束中的主體實體。 實體的索引鍵屬性會新增至對話方塊中的 [主體金鑰 ] 清單。
從 [ 相依 ] 下拉式清單中,選取引用條件約束中的相依實體。
對於具有相依金鑰的每個主體金鑰,請從 [相依金鑰] 資料行的 下拉式清單中選取對應的相依金鑰 。
按一下 [確定]。
建立和編輯關聯對應
您可以在 EF Designer 的 [ 對應詳細 資料] 視窗中,指定關聯如何對應至資料庫。
注意
您只能對應未指定引用條件約束之關聯的詳細數據。 如果指定了引用條件約束,則實體中會包含外鍵屬性,而且您可以使用實體的對應詳細數據來控制外鍵所對應的數據行。
建立關聯對應
以滑鼠右鍵按兩下設計介面中的關聯,然後選取 [ 資料表對應]。 這會在 [ 對應詳細 數據] 視窗中顯示關聯對應。
按兩下 [新增數據表] 或 [ 檢視]。 包含儲存體模型中所有資料表的下拉式清單便會出現。
選取此關聯將要對應的資料表。 [ 對應詳細數據 ] 視窗會顯示關聯兩端,以及每個 End 實體類型的索引鍵屬性。
針對每個索引鍵屬性,按兩下 [ 資料行 ] 字段,然後選取屬性將對應的數據行。
編輯關聯對應
- 以滑鼠右鍵按兩下設計介面中的關聯,然後選取 [ 資料表對應]。 這會在 [ 對應詳細 數據] 視窗中顯示關聯對應。
- 按兩下 [資料表名稱>] 地圖<。 包含儲存體模型中所有資料表的下拉式清單便會出現。
- 選取此關聯將要對應的資料表。 [ 對應詳細數據 ] 視窗會顯示關聯兩端,以及每個 End 實體類型的索引鍵屬性。
- 針對每個索引鍵屬性,按兩下 [ 資料行 ] 字段,然後選取屬性將對應的數據行。
編輯和刪除導覽屬性
導覽屬性是用來在模型中關聯結尾尋找實體的快捷方式屬性。 當您在兩個實體類型之間建立關聯時,可以建立導覽屬性。
編輯導覽屬性
- 選取 EF Designer 介面上的導覽屬性。 導覽屬性的相關信息會顯示在 Visual Studio 屬性 視窗中。
- 變更 [屬性] 視窗中的屬性設定。
若要刪除導覽屬性
- 如果未在概念模型中的實體類型上公開外部索引鍵,刪除導覽屬性可能會使對應的關聯只能單向周遊,或者完全不能周遊。
- 以滑鼠右鍵按兩下 EF Designer 介面上的導覽屬性,然後選取 [ 刪除]。