Asp.net mvc 4 在mvc4中声明自关联多对多

Asp.net mvc 4 在mvc4中声明自关联多对多,asp.net-mvc-4,Asp.net Mvc 4,我想说的是,一种药物可以有一种或多种类似的药物,因此它是一种多对多的自我关系 试图以这种方式解决这个问题 [Key] [Column(Order = 0)] [ForeignKey("drug_name")] public string drug_name1 { get; set; } [Key] [Column(Order = 1)] [ForeignKey("drug_name")] public string drug_na

我想说的是,一种药物可以有一种或多种类似的药物,因此它是一种多对多的自我关系

试图以这种方式解决这个问题

    [Key]
    [Column(Order = 0)]
    [ForeignKey("drug_name")]
    public string drug_name1 { get; set; }

    [Key]
    [Column(Order = 1)]
    [ForeignKey("drug_name")]
    public string drug_name2 { get; set; }

    public virtual Drug drug_name { get; set; }
    public virtual Drug drug_name { get; set; }

当然它不起作用。我不太明白外文表中相关字段的名称。我需要其中的两个:drug1和drug2,但名称应该与相关类中的名称相同,但我不能为两个字段指定相同的名称。那么我如何才能做到这一点呢?

您所拥有的几乎是完全错误的,所以让我告诉您正确的方法:

public class Drug
{
    [Key]
    public int DrugId { get; set; }

    ...

    public virtual ICollection<Drug> SimilarDrugs { get; set; }

    public class DrugMapping : EntityTypeConfiguration<Drug>
    {
        public DrugMapping()
        {
            HasMany(m => m.SimilarDrugs).WithMany();
        }
    }
}
为了

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Configurations.Add(new Drug.DrugMapping());
}