EF:声明属性中的多对多关系

时间:2013-05-08 06:55:40

标签: entity-framework entity-framework-5

可以在fluent-API中声明多对多的关系。

modelBuilder.Entity<Course>()
    .HasMany(t => t.Instructors)
    .WithMany()

我宁愿在我的域模型中有某些属性可以做同样的事情。 框架中是否存在这样的属性,或者我可以创建一些可以在生成数据库时影响EF行为的属性?

2 个答案:

答案 0 :(得分:1)

我已经假设你的模型,请尝试下面看看它是否有效。

public class Course
{
    [InverseProperty("Courses")] //add this attribute
    public ICollection<Instructor> Instructors { get; set; }
    //other properties..
}

public class Instructor
{
    [InverseProperty("Instructors")] //add this attribute
    public ICollection<Course> Courses { get; set; }
    //other properties..  
}

通过这种方式,您可以告诉实体框架在Course Instructor模型中查找要映射的属性。

此外,您甚至不需要定义这种方式。但如果您在Course中有多个Instructor类型的属性,反之亦然,则需要正确指出映射到哪个属性。

尽管如此,使用流畅的API更好,可扩展且易于管理

答案 1 :(得分:1)

您不需要任何属性。如果在每个实体中声明ICollection<T>,EF将按惯例创建多对多关系。请参阅here