0

在 fluent-API 中可以像这样声明多对多关系。

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

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

4

2 回答 2

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反之亦然,您需要正确指出哪个映射到什么。

尽管如此,使用 fluent API 还是要好得多,而且可扩展且易于管理

于 2013-05-08T07:07:21.780 回答
1

您不需要任何属性。如果您ICollection<T>在每个实体中声明,EF 将按照约定创建多对多关系。见这里

于 2013-05-08T07:08:41.587 回答