我有一個關於如何使用Code First fluent API配置與一個連接表的一對多關係的問題。我有一個公司,聯繫對象都是共用一個地址對象像下面使用EF代碼優先加入表與一對多關係
Class Address {
public int AddressId
.....
}
Class Company {
public int CompanyId
......
public virtual ICollection<Address> Address
}
Class Contact {
public int ContactID
.......
public virtual ICollection<Address> Address
}
我預計DB結構將是
Company Table
CompanyId PK NOT NULL
.....
Contact Table
ContactId PK NOT NULL
.....
Address Table
AddressId PK NOT NULL
.....
CompanyAddress Table
CompanyId NOT NULL
AddressId NOT NULL
ContactAddress Table
ContactId NOT NULL
AddressId NOT NULL
我可以通過使用下面的流暢API
實現這一目標modelBuilder.Entity<Company>()
.HasMany(c => c.Address)
.WithMany()
.Map(m =>
{
m => m.MapLeftKey("CompanyId")
.MapRightKey("AddressId")
.ToTable("CompanyAddress")});
modelBuilder.Entity<Contact>()
.HasMany(c => c.Address)
.WithMany()
.Map(m =>
{
m => m.MapLeftKey("ContactId")
.MapRightKey("AddressId")
.ToTable("ContactAddress")});
但EF開始將公司和地址視爲多對多關係,當我嘗試刪除公司或聯繫人時,它不刪除相應的地址記錄(因爲EF處理他們多到很多),我如何使用帶級聯刪除選項的EF來定義這種類型的關係。我搜索了3天以上,驚訝沒有人談過或提出過這種情況,所以想知道我的方法是錯誤的還是答案很微不足道。
你的問題似乎是關於級聯刪除比許多一對多的關係,等等。也許問題的標題應該更像「我如何防止EF中的級聯刪除?」 – 2013-04-05 00:53:25