如何将一个实体映射到实体框架中的多个实体?

时间:2016-01-11 09:57:23

标签: c# entity-framework ef-code-first entity-framework-6 code-first

我有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个表,Client,Supplier和Note。注释表需要指向EntityId字段上的客户和供应商注释。实际发生的是,EF正在将Note_ID和Supplier_ID字段添加到Note表中,每个表都有外键。这样做的结果基本上只有在包含客户和供应商的情况下才能创建注释。

我需要做些什么才能使我的行为符合我的需要?

1 个答案:

答案 0 :(得分:-1)

试试这个Info

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