我認爲這可能有助於得出關於何時使用WithOptionalDependent
以及何時使用WithOptionalPrincipal
的明確答案。這兩個函數的幫助有點不清楚,我發現自己通過多個Stack Overflow解答和其他站點上的答案組合來解答問題,以便確信自己已經把關係轉向了正確的方向。WithOptionalDependent vs WithOptionalPrinciple - Definitive Answer?
這裏的MSDN說怎麼樣WithOptionalDependent
:
配置是可選的關係:無可選的關係的另一側的 導航屬性。被配置的實體 類型將是依賴項,並且包含主體的外鍵 。關係目標的實體類型將爲 爲關係中的主體。
,這裏是是怎麼說WithOptionalPrincipal
:
配置是可選的關係:無可選的關係的另一側的 導航屬性。正在配置的實體 將成爲關係中的主體。該關係所針對的 實體類型將成爲依賴關係,而 包含該主體的外鍵。
「正在配置的實體類型」這一行總是讓我感到困惑(我假設其他人)。
在這個例子中:
class MyEntityA
{
[Key]
public int Id { get; set; }
public int BId { get; set; }
[ForeignKey("BId")]
public MyEntityB B { get; set; }
}
class MyEntityB
{
[Key]
public int Id { get; set; }
}
modelBuilder.Entity<MyEntityA>().HasOptional(a => a.B).WithOptionalDependent();
是 「的實體類型被配置」 指的是MyEntityA
或MyEntityB
?我認爲這是前者。
如果這是正確的,那麼什麼時候使用WithOptionalPrincipal
?
我實際上在我的代碼示例中認爲它應該確實是WithMany
,而且沒有WithOptional選項。顯然我還是很困惑!
這些函數都有重載,導致導航屬性走向另一個方向。我認爲這些超載不會改變這些答案,但如果我錯了,請糾正我。
我希望這對更大的社區也有幫助。