實體架構 1:1 關係:定義主體實體
在實體框架的一對一關係中,一個實體被指定為“主體”,另一個實體被指定為“從屬”。 主實體是獨立存在並擁有自己的主鍵的實體。相反,從屬實體依賴引用主體實體主鍵的外鍵。
範例與主體辨識
讓我們檢查一下這段程式碼:
<code class="language-csharp">public class Foo { public string FooId { get; set; } public Boo Boo { get; set; } } public class Boo { public string BooId { get; set; } public Foo Foo { get; set; } }</code>
這裡,Foo
充當主體實體,因為它有自己的主鍵 (FooId
)。另一方面,Boo
是依賴實體,透過外鍵引用 FooId
。
解決「無法確定主體結束」錯誤
在實體框架中配置此關係時,您可能會遇到錯誤:「無法確定關聯的主體端...」。出現這種情況是因為實體框架需要明確的指導來識別主體實體。
明確主體端配置
要解決這個問題,請使用資料註解或 Fluent API 明確定義主體。
方法一:資料標註
利用 [Key]
和 [ForeignKey]
屬性指定依賴實體內的外鍵屬性:
<code class="language-csharp">public class Boo { [Key, ForeignKey("Foo")] public string BooId { get; set; } public Foo Foo { get; set; } }</code>
方法二:Fluent API
使用 WithRequired()
方法指定依賴實體,使用 HasOptional()
指定主體實體:
<code class="language-csharp">modelBuilder.Entity<Foo>() .HasOptional(f => f.Boo) .WithRequired(s => s.Foo);</code>
結論
正確識別和配置實體框架 1:1 關係中的主體實體至關重要。 透過使用資料註解或 Fluent API 明確定義主體端,您可以避免「無法確定主體端」錯誤並確保準確的資料庫對應。
以上是如何辨識和配置實體框架1:1關係中的主體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!