您必須將CFFPartDisp
作爲模型中的實體類公開。您不能將它用作CFFPart
和Disp
之間的鏈接表,並在您的問題中使用Fluent映射。 CFFPart
和Disp
之間的關係不是多對多的關係(在嚴格的EF意義上)。相反,您必須創建兩個與CFFPartDisp
作爲中間實體的一對多關係。然後,您可以將您與CFFPartDisp
和Expert
之間的關係作爲第三關係鏈接到此中間實體。
的CFFPartDisp
實體可以是這樣的:
public class CFFPartDisp
{
public int ID { get; set; }
public int CFFPartID { get; set; }
public CFFPart CFFPart { get; set; }
public int DispID { get; set; }
public Disp Disp { get; set; }
public ICollection<Expert> Experts { get; set; }
}
的CFFPart
和Disp
實體將需要集合指的CFFPartDisp
:
public class CFFPart
{
public int ID { get; set; }
public ICollection<CFFPartDisp> CFFPartDisps { get; set; }
}
public class Disp
{
public int ID { get; set; }
public ICollection<CFFPartDisp> CFFPartDisps { get; set; }
}
而且Expert
需要的CFFPartDisp
集合以及建立CFFPartDisp
和Expert
之間的多對多關係:
public class Expert
{
public int ID { get; set; }
public ICollection<CFFPartDisp> CFFPartDisps { get; set; }
}
使用這些實體可以創建三個關係:
modelBuilder.Entity<CFFPartDisp>()
.HasRequired(cpd => cpd.CFFPart)
.WithMany(cp => cp.CFFPartDisps)
.HasForeignKey(cpd => cpd.CFFPartID);
modelBuilder.Entity<CFFPartDisp>()
.HasRequired(cpd => cpd.Disp)
.WithMany(cp => cp.CFFPartDisps)
.HasForeignKey(cpd => cpd.DispID);
modelBuilder.Entity<CFFPartDisp>()
.HasMany(cpd => cpd.Experts)
.WithMany(e => e.CFFPartDisps)
.Map(m =>
{
m.MapLeftKey("CFFPartDispID");
m.MapRightKey("ExpertID");
m.ToTable("CFFpartDisPExpert");
});
你能寫出更多的細節?可能是顯示數據庫圖。你的問題是什麼? –
@KirillBestemyanov - 我從Code First的兩個表(CFFPart和Disp)創建一個組合表(CFFpartDisp)。數據庫當前使用組合表的ID(主鍵)與專家建立關係。我不知道如何使用CodeFirst將組合表ID與專家ID進行映射?任何建議,將不勝感激。 – akki