簡體   English   中英

沒有FK的實體框架中的一對多關系

[英]One-to-many relationship in Entity Framework without FK

我繼承了一個以這種方式創建的所有一對多關系的項目

[Table("A")]
public partial class A
{
    public int Id { get; set; }
    public int Something {get; set; }

    public virtual ICollection<B> B { get; set; }

}

[Table("B")]
public partial class B
{
    [Key]
    public int Id { get; set; }
    public int Something {get; set; }

    [Required]
    public virtual A A { get; set; }    
}

使我感到震驚的是,B模型中缺少int外鍵屬性。 實體框架必須創建它,因為它們存在於我們的數據庫中。

誰能先解釋為什么會這樣,然后再解釋是否會造成延遲加載的問題呢?

默認情況下,EntityFramework查找名稱“ id”並使其成為鍵。 您可以指定裝飾以使其更快,因為它不必猜測表的鍵。

我不認為這會影響延遲加載,因為延遲加載是通過創建派生代理類型的實例,然后重寫虛擬屬性以添加加載鈎子來實現的。

資料來源:
微軟金鑰
Microsoft延遲加載

EF不需要外鍵屬性。 EF可以基於對象關系建立隱藏字段(並且我通常使用此配置,因為我認為這是更多的POCO)。 唯一的問題是,在某些情況下,在驗證或SaveChanges期間引發的異常更難以理解,否則一切正常。

關於外鍵列名,您可以使用流利的api(Map + MapLeftKey,MapRightKey和MapKey方法)進行配置。

暫無
暫無

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

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