1

我來自Java,現在正在使用C#和Entity Framework將現有系統實現到數據庫中。如何使用Entity Framework和Fluent API映射覆雜的一對多

由於我不能在這裏顯示實際的類,我試圖做一個與我的問題相同的例子,如下所示。 我有一個Company其中有幾個屬性列表Person。當我使用EF將其轉換爲數據庫時,我爲每個Person實例獲取一個新的外鍵列。

Company 
    public GUID CompanyID {get,set} 
    public List<Person> Employee{get,set} 
    public List<Person> Janitors {get,set} 
    public List<Person> Students {get,set} 
    public List<Person> Professors {get,set}  

Person 
    public GUID CompanyID {get,set} 

我想人的數據庫方案是

|Column 1 | Column 2 | Column 3 | Company_FK | 
---------------------------------------------- 

但現在它更像是這

| Column 1 | Column 2 | Column 3 | Company_ID | Company_ID1 | Company_ID2 ... 
-------------------------------------------------------------------------- 
            null   reference  null 
            null   reference  null 
            reference   null  null 
       ~~~~~~~~~~~~~~~~~~~~~~etc~~~~~~~~~~~~~~~~~~ 

所有這些COMPANY_ID *列具有相同的公司表引用,因此我相信只有一列用於此參考並不是不可能的,然後將所有這些參考文獻都刪除。

我需要一個Fluent API解決方案,而不是數據註解。

回答

1

與貴公司的配置試試這個:

HasMany(x => x.Employee).WithRequired().HasForeignKey(x => x.CompanyID); 
HasMany(x => x.Janitors).WithRequired().HasForeignKey(x => x.CompanyID); 
HasMany(x => x.Students).WithRequired().HasForeignKey(x => x.CompanyID); 
HasMany(x => x.Professors).WithRequired().HasForeignKey(x => x.CompanyID); 
+0

它是成功的,但我得到這個錯誤消息「到數據庫的更改被成功提交,但出現錯誤而更新對象上下文的ObjectContext的可能。處於不一致的狀態內部異常消息:發生了參照完整性約束衝突:定義參照約束的屬性值在關係中的主體和從屬對象之間不一致。但是你的代碼工作,我很感謝你的幫助@JustAnotherUserYouMayKnow – jonas 2013-02-21 11:52:22

相關問題