asp.net代码首先与同一个表进行多次

时间:2019-04-19 01:19:35

标签: asp.net entity-framework many-to-many

要使M:M关系有效,必须: {在“删除类”中,我应该将ID(TL_Id,JD_ID,PM_ID)设置为“用户类ID名称”(UserId)才能正常工作,依此类推,并设置对象“用户用户名”(TL,JD,PM)}。

有什么办法可以使这项工作成功吗??

public class Users
{
   [Key]
   public int UserId { get; set; }
   public String job_description { get; set; }
   public virtual ICollection<Remove> Remove{ get; set; }
}

public class Remove
{
    [Key, Column(Order = 0)]
    public int TL_Id { get; set; }
    [Key, Column(Order = 1)]
    public int JD_ID { get; set; }
    [Key, Column(Order = 2)]
    public int PM_ID { get; set; }

    public virtual Users TL { get; set; }
    public virtual Users JD { get; set; }
    public virtual Users PM { get; set; }

    public string remove_request { get; set; }
}

1 个答案:

答案 0 :(得分:0)

如果您确实需要这个。您需要向Remove类添加其他属性:

public class Remove
{
    [Key, Column(Order = 0)]
    public int TL_Id { get; set; }
    [Key, Column(Order = 1)]
    public int JD_ID { get; set; }
    [Key, Column(Order = 2)]
    public int PM_ID { get; set; }

    public virtual Users RemoveListed{ get; set; }
    ...
}

通过Fluent API创建FK:

modelBuilder.Entity<Remove>()  
    .HasRequired(c => c.RemoveListed)  
    .WithMany(d => d.Remove)
    .HasForeignKey(d => new { d.TL_Id , d.JD_ID, d.PM_ID });

阅读:https://docs.microsoft.com/en-US/ef/ef6/modeling/code-first/fluent/relationships

  

重要! Users.Remove将遍历Remove.RemoveListed。

我认为这不是您想要的。在这种情况下,我认为应该修改数据结构。

  

这是一对多关系。两个实体中的多对多必选清单。