Entity framework core Entityframework core如何在不创建联接表的情况下映射多对多

Entity framework core Entityframework core如何在不创建联接表的情况下映射多对多,entity-framework-core,asp.net-core-2.0,Entity Framework Core,Asp.net Core 2.0,我正在尝试将此活动从现有的.edmx项目克隆到代码优先 我有两个实体。我希望在不创建新表的情况下建立多对多关系。我使用的是EFCore2.0代码优先的方法 请在下面找到我创建的实体。我不确定这样做是否正确 我希望两个表上都有外键列,即WorkCase和Workflow表上分别有WorkflowId和WorkCaseId public class WorkCase { [Key] public int WorkCaseId { get; set; }

我正在尝试将此活动从现有的.edmx项目克隆到代码优先

我有两个实体。我希望在不创建新表的情况下建立多对多关系。我使用的是EFCore2.0代码优先的方法

请在下面找到我创建的实体。我不确定这样做是否正确

我希望两个表上都有外键列,即WorkCase和Workflow表上分别有WorkflowId和WorkCaseId

    public class WorkCase
    {
        [Key]
        public int WorkCaseId { get; set; }

        public int WorkflowId { get; set; }

        public int CaseDetailId {get;set;}

        public CaseDetail CaseDetail {get;set;}

        public WorkFlow WorkFlow { get; set; }

        public ICollection<WorkFlow> WorkFlows { get; set; }
    }

    public class WorkFlow : BaseEntity
    {
        [Key]
        public int WorkFlowId { get; set; }

        public string Comment { get; set; }

        public DateTime? UpdateDate { get; set; }

        public int WorkCaseId { get; set; }

        public WorkCase WorkCase { get; set; }

        public ICollection<WorkCase> WorkCases { get; set; }
    }
公共类工作案例
{
[关键]
public int WorkCaseId{get;set;}
public int WorkflowId{get;set;}
public int casetailid{get;set;}
公共案例详细信息案例详细信息{get;set;}
公共工作流{get;set;}
公共ICollection工作流{get;set;}
}
公共类工作流:BaseEntity
{
[关键]
public int WorkFlowId{get;set;}
公共字符串注释{get;set;}
公共日期时间?更新日期{get;set;}
public int WorkCaseId{get;set;}
公共工作案例工作案例{get;set;}
公共ICollection工作案例{get;set;}
}
我的期望如下。任何人都可以帮助实现EF核心配置: -Workcase将具有最新的workflowid -工作流将具有每个workcaseid的历史记录


感谢更新:EF5+支持多对多,无需显式映射联接表。看见
正如对您的问题的评论,EF Core注意到以下段落“没有实体类来表示联接表的多对多关系还不受支持。”@IvanStoev谢谢。我已经用我的期望更新了我的查询。你能帮我如何实现这一点吗?谢谢
public class WorkCase
{
    public int WorkCaseId { get; set; }

    public int CaseDetailId { get; set; }

    public CaseDetail CaseDetail { get; set; }

    public ICollection<WorkCaseWorkflow> Workflows { get; set; }
}

public class Workflow
{
    public int WorkflowId { get; set; }

    public string Comment { get; set; }

    public DateTime? UpdateDate { get; set; }

    public ICollection<WorkCaseWorkflow> WorkCases { get; set; }
}

public class WorkCaseWorkflow
{
    public int WorkCaseId { get; set; }
    public WorkCase WorkCase { get; set; }

    public int WorkflowId { get; set; }
    public Workflow Workflow { get; set; }
}
protected override void OnModelCreating(ModelBuilder builder)
{
    var ww = builder.Entity<WorkCaseWorkflow>();
    ww.HasKey(w => new { w.WorkCaseId, WorkflowId });
    ww.HasOne(w => w.WorkCase)
      .WithMany(wc => wc.Workflows)
      .HasForeignKey(w => w.WorkCaseId);
    ww.HasOne(w => w.Workflow)
      .WithMany(wc => wc.WorkCases)
      .HasForeignKey(w => w.WorkflowId);
}