8

我使用的是實體框架4.1數據庫的第一種方法。我使用過遺留數據庫。在我創建的基於舊數據庫中的表的實體類的edmx文件中,有一些實體之間存在一對一或一對一的關聯。在SQL Server中實現一對一或一對一的關係

雖然我研究的數據庫和它們之間的關係,我沒有找到如何一到零或一關係已經在數據庫中執行的表。

欲瞭解更多信息,我把我的數據庫圖的一些截圖和它的關係及相應的實體在EDMX文件屬性:

enter image description here enter image description here

回答

25

在數據庫中的1-0..1關係是直接可見的。它建立在Course和OnlineCourse表之間,Course是關係主體(1),OnlineCourse依賴於CourseID上配置的FK。 FK也是OnlineCourse的PK =它必須是唯一的,因爲它是0..1。因爲真正的1 0..1 - - 1不能有效地用於數據插入

數據庫「總是」使用1。 1 - 1意味着左側必須插入右側,但必須在左側=不可能後插入右側。因爲1 - 0..1用於左邊是主體並且必須在右邊和右邊依賴之前插入,並且必須在左邊後插入。

+0

我添加了一個非空列所屬表抱着孩子表的ID,並增加了一個刪除觸發器,以保證孩子被刪除。這樣我可以確保擁有表格有1個參考。 –

0

如果數據庫表已經設計了一個1: 1關係(或1:0-1),那麼EF將會很好地工作,雖然它會複數子表名(如果你讓它複數化)。

的基本方法是創建一個外鍵(因爲如果你犯了個1:許多關係),再穿上外鍵字段唯一索引。這就是你想要完成的目標嗎?

這可能有助於,太:Designing 1:1 and 1:m relationships in SQL Server

在一個側面說明,1-1的關係往往是沒有必要的和/或數據庫設計,需要重新思考的症狀。但是,這聽起來像你繼承了設計......我知道這一切!