簡體   English   中英

如何在實體框架中建立真正的一對一關系?

[英]How to do a true one-to-one relationship in Entity Framework?

我快到了。 我越接近是 1 到 0..1 的關系。

我的物理模式是:

User: 
 - Id : int primary Key identity
 - Name : varchar(50)

UserDetail: 
 - Id : int primary Key | foreign key to User.Id
 - DisplayName : varchar(200)

當我在實體數據 Model 設計器中導入此架構時,Visual Studio 2010 建議使用 1 到 0..1 的關系。 如果我強制執行 1..1 它接受但結果看起來不像 1..1 關系。

我對 1..1 關系有什么期望?

我希望它:

  • 創建 UserDetail 時自動創建用戶,反之亦然(首選)
  • 當我嘗試保存沒有 UserDetail 的用戶時拋出異常,反之亦然

我怎樣才能做到這一點?

即使在數據庫級別也不支持它,因為真正的 1 對 1 關系意味着您必須具有從UserUserDetail的 FK 以及同時從UserDetailUser的 FK。 1 比 1 表示如果沒有第二條記錄,一條記錄就不能存在,但是當檢查引用約束時,無法將這些記錄插入表中。

一對一實際上始終是 1 到 0..1,因為您必須能夠在沒有依賴記錄的情況下插入主體記錄,並且一旦主體記錄被持久化,您就可以插入依賴記錄。 EF 與關系數據庫的工作方式密切相關。 我知道純 1 對 1 工作的唯一情況是表拆分,您將 map 到同一個表的實體,因此兩個實體必須始終存在並插入在一起,因為它們形成單個記錄。

如果您想始終將UserUserDetail保存在一起,您應該 model 使用實體拆分將它們作為單個實體。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM