在 fluent-API 中可以像这样声明多对多关系。
modelBuilder.Entity<Course>()
.HasMany(t => t.Instructors)
.WithMany()
如果有某些属性可以在我的域模型中做同样的事情,我宁愿这样做。框架中的某处是否有这样的属性,或者我可以自己制作一些可以在生成数据库时影响 EF 行为的属性?
在 fluent-API 中可以像这样声明多对多关系。
modelBuilder.Entity<Course>()
.HasMany(t => t.Instructors)
.WithMany()
如果有某些属性可以在我的域模型中做同样的事情,我宁愿这样做。框架中的某处是否有这样的属性,或者我可以自己制作一些可以在生成数据库时影响 EF 行为的属性?
我假设你的模型,试试下面看看它是否有效。
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
反之亦然,您需要正确指出哪个映射到什么。
尽管如此,使用 fluent API 还是要好得多,而且可扩展且易于管理
您不需要任何属性。如果您ICollection<T>
在每个实体中声明,EF 将按照约定创建多对多关系。见这里。