[英]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.