對於精通EF的用戶來說,這應該是一個簡單的問題。映射多對多關係(帶外鍵參考)
我有以下架構(在我的腦海中)表格之間的關係應該看起來如何。
[FooBar] [Foo] [Bar]
FooId PK,FK Id PK Id PK
BarId PK,FK BarId FK Name
IsRead Name Description
Description
不過,當我嘗試使用EF代碼首先它不能解釋,因爲我已經作出瞭解釋實體之間的關係產生模式(增加了外鍵FooId
到[bar]
表)和失敗完全創建[FooBar]
橋表。
如果有人能指導我如何使用EF4代碼實現上述架構 - 首先,我會很感激。無論解決方案是否包含我的POCO模型中的屬性,流利配置或兩者的混合都無關緊要 - 只要創建了所需的數據庫模式即可。
POCO模式:
public class Foo
{
public int Id { get; set; }
public string Text { get; set; }
public string Description { get; set; }
public int BarId { get; set; }
public Bar Bar { get; set; } /* bar entity */
public virtual ICollection<Bar> BridgedBars { get; set; }
public Foo()
{
Bars = new List<Bar>();
}
}
public class Bar
{
public int Id { get; set; }
public string Text { get; set; }
public string Description { get; set; }
public virtual ICollection<Foo> Foos { get; set; }
public virtual ICollection<Foo> BridgedFoos { get; set; }
public Bar()
{
Foos = new List<Foo>();
BridgedFoos = new List<Foo>();
}
}
public class FooBar
{
public int FooId { get; set; }
public int BarId { get; set; }
public virtual Foo Foo { get; set; }
public virtual Bar Bar { get; set; }
public bool IsRead { get; set; }
}
正如你有一個關於FooBar關係的屬性(IsRead),您可能想從代碼中設置,Foo和Bar都需要它們的相關集合爲FooBars。一旦將兩端的屬性(即Foo和Bar中的虛擬集合)映射到FooBar EF,應該正確地創建關係。使用HasMany()。WithRequired()將每個類映射到FooBar。 –