如何在没有新实体的情况下配置多对多关系?

时间:2013-12-20 09:11:05

标签: c# entity-framework many-to-many

我有两张表HumanPet。并有表HumanToPet

如何在实体框架中做到这一点?

示例:

class Human
{
   string Name;
   virtual ICollection<Pet> Pets { get; set; }
}

更新我使用映射(流畅配置)

2 个答案:

答案 0 :(得分:1)

public partial class Human
{
   public Human()
   {
      Pets = new List<Pet>();
   }

   public int HumanID { get; set; }
   public string Name{ get; set; }
   public virtual ICollection<Pet> Pets { get; set; }
}

public partial class Pet
{
   public Pet()
   {
      Owners= new List<Human>();
   }

   public int PetID { get; set; }
   public string Name{ get; set; }
   public virtual ICollection<Human> Owners { get; set; }
}

从这个结构中,EF将能够推断出这种关系。

编辑:Fluent API映射:

 modelBuilder.Entity<Human>()
 .HasMany(a => a.Pets)
 .WithMany()
 .Map(x =>
 {
   x.MapLeftKey("HumanID");
   x.MapRightKey("PetID");
   x.ToTable("HumanToPet");
  });

答案 1 :(得分:0)

您需要在数据库中的这些表之间添加引用。 之后,在VS中生成的EF模型将会看到它。