C# 如何在实体框架中将一个实体映射到多个实体?
我有4个实体。它们看起来像这样: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 {
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);