0
我一直在這個塊上繞過幾次,所以我採取了一種全新的方法。我想弄清楚是否有可能在多個0對多關係的多方面有一個單一的實體。這就是我想要做的事:實體框架代碼第一個 - 共享的一對多實體
客戶端有0到許多手機
public class Client
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ClientId { get; set; }
public string Name { get; set; }
public virtual ICollection<Phone> Phones { get; set; }
}
企業有0到許多手機
public class Business
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int BusinessId { get; set; }
public string Name { get; set; }
public virtual ICollection<Phone> Phones { get; set; }
}
這裏是電話:
public class Phone
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PhoneId { get; set; }
public string Number { get; set; }
}
當然,在商業/客戶端Phones屬性的問題是,這將創建FK的電話博客戶端和業務部門混淆了電話。
於是,我看到了另一個海報嘗試創建一個手動連接表,但它似乎是面向參加一個關係的多面:
public class ClientPhone
{
public int ClientID { get; set; }
public int PhoneID { get; set; }
public virtual Client Client { get; set; } // One Client
public virtual Phone Phone { get; set; } // One Phone
}
我應該分頭電話成ClientPhones和BusinessPhones「正常'的實體使用傳統的0對多關係。如果有人可以給我一些建議,以最簡潔的方式來建模,這將非常感激。
謝謝!
哇,是我在想這個!我假設我將派生類添加到DBContext? – cardinalPilot 2013-04-24 13:53:12
是的,這是正確的 – 2013-04-24 14:29:31
額外的想法 - 你指的是能夠輕鬆地分離客戶端和商務電話。如果鑑別器列在內部並且無法從POCO訪問,你怎麼能這樣做?如果您無法回答,我會發佈一個新問題。 – cardinalPilot 2013-04-30 20:18:13