2

我有4個實體。他們看起來像這樣:如何將實體映射到實體框架中的許多實體?

public abstract class Entity 
{ 
    public Guid Id { get; set; } 
    public DateTime CreationDate { get; set; } 
} 

public class Client : 
    Entity 
{ 
    public string Name { get; set; } 
    // ... 
    public IList<Note> Notes { get; set; } 
} 

public class Supplier : 
    Entity 
{ 
    public string Name { get; set; } 
    // ... 
    public IList<Note> Notes { get; set; } 
} 

public class Note : 
    Entity 
{ 
    public Guid EntityId { get; set; } // This points to the Id field of a Client or Supplier 
    public virtual Entity Entity { get; set; } 
    public string EntityName { get; set; } // "Client", "Supplier", etc. 
} 

現在,我想要的是爲此創建3個表,客戶端,供應商和備註。註釋表需要指向EntityId字段上的客戶和供應商註釋。實際發生的情況是,EF正在將「Client_ID」和「Supplier_ID」字段添加到「註釋」表中,並將外鍵分配給各個表。這樣做的效果基本上只有在包含客戶和供應商的情況下才能創建註釋。

我需要做些什麼才能使這種行爲符合我的需要?

+0

沒有automapper你在找什麼? – kopelence

+0

你能給我一個automapper如何解決這個問題的例子嗎? – RichieACC

+0

外鍵約束呢?您需要在每個「父」實體的註釋表中使用外鍵列 –

回答

-1

試試這個Info

this.HasOptional(t => t.Client) 
       .WithMany(t => t.Notes) 
       .HasForeignKey(d => d.Id); 
+0

這是在票據上還是在客戶和供應商處執行? – RichieACC

+0

客戶和供應商,所有類別都有實體清單 – J4ime

+0

不,只有'客戶'。這不是OP想要的。 –