可以在fluent-API中声明多对多的关系。
modelBuilder.Entity<Course>()
.HasMany(t => t.Instructors)
.WithMany()
我宁愿在我的域模型中有某些属性可以做同样的事情。 框架中是否存在这样的属性,或者我可以创建一些可以在生成数据库时影响EF行为的属性?
答案 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。