在mvc4中声明自我关联多对多

时间:2015-03-05 14:06:13

标签: 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_name2 { get; set; }

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

当然不行。我真的不明白应该给Foreign表上的相关字段的名称。我需要其中2个:drug1和drug2但名称应该与相关类别的名称相同,但是我不能给2个字段命名相同。那么我该怎么办呢?

1 个答案:

答案 0 :(得分:0)

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

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());
}

有关