要使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; }
}
答案 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。
我认为这不是您想要的。在这种情况下,我认为应该修改数据结构。
这是一对多关系。两个实体中的多对多必选清单。