Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在实体框架中将一个实体映射到多个实体?_C#_Entity Framework_Ef Code First_Entity Framework 6_Code First - Fatal编程技术网

C# 如何在实体框架中将一个实体映射到多个实体?

C# 如何在实体框架中将一个实体映射到多个实体?,c#,entity-framework,ef-code-first,entity-framework-6,code-first,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 {

我有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.
}
公共抽象类实体
{
公共Guid Id{get;set;}
公共日期时间创建日期{get;set;}
}
公共类客户端:
实体
{
公共字符串名称{get;set;}
// ...
公共IList注释{get;set;}
}
公共类供应商:
实体
{
公共字符串名称{get;set;}
// ...
公共IList注释{get;set;}
}
公开课注:
实体
{
公共Guid EntityId{get;set;}//指向客户或供应商的Id字段
公共虚拟实体{get;set;}
公共字符串EntityName{get;set;}//“客户端”、“供应商”等。
}
现在,我想让它创建3个表,客户表、供应商表和备注表。注释表需要指向EntityId字段上的客户和供应商注释。实际发生的情况是,EF将客户ID和供应商ID字段添加到Note表中,并将外键添加到各个表中。其效果基本上是,只有同时包括客户和供应商,才能创建注释

我需要做什么才能使它按我需要的方式运行?

试试这个

试试这个



你不是在找automapper吗?你能给我举个例子说明automapper如何解决这个问题吗?外键约束呢?对于每个“父”实体,注释表中都需要一个外键列。使用外键时,需要客户和供应商出现在注释中,因此,它不起作用。这几乎是多态关联问题的每周体现。automapper不是你要找的吗?你能给我一个例子说明automapper如何解决这个问题吗?外键约束呢?对于每个“父”实体,注释表中都需要一个外键列。使用外键时,需要客户和供应商出现在注释中,因此,它不起作用。这几乎是多态关联问题的每周体现。这是在注释上还是在客户和供应商上实现的?客户和供应商,所有类都有实体列表否,仅
客户
。这不是OP想要的为什么只有客户?供应商需要相同的关系,this.HasOptional(t=>t.Supplier)。WithMany(t=>t.Notes)。HasForeignKey(d=>d.Id);不能让一个FK指向多个表(
d.Id
实际上应该是
d.EntityId
)。这是在便笺上还是在客户和供应商上实现的?客户和供应商,所有类都有实体列表否,仅
Client
。这不是OP想要的为什么只有客户?供应商需要相同的关系,this.HasOptional(t=>t.Supplier)。WithMany(t=>t.Notes)。HasForeignKey(d=>d.Id);不能让一个FK指向多个表(
d.Id
实际上应该是
d.EntityId
)。
this.HasOptional(t => t.Client)
                .WithMany(t => t.Notes )
                .HasForeignKey(d => d.Id);