我是Fluent API的新手。在我的方案中,Student
可以在一个Grade
中,Grade
可以有多个Students
。然后,这两个陈述完成了同样的事情:
modelBuilder
.Entity<Student>()
.HasRequired<Grade>(s => s.Grade)
.WithMany(s => s.Students);
和
modelBuilder
.Entity<Grade>()
.HasMany<Student>(s => s.Students)
.WithRequired(s => s.Grade);
我的问题是 - 我应该如何选择另一个声明呢?或者我是否需要这两种陈述?
答案 0 :(得分:5)
对于像你这样的双向关系(即当两端都有导航属性时),它并不重要,你可以使用其中一个(你也可以同时使用它们,但它和#39;不推荐,因为它是多余的,可能导致两者之间不同步。)
当您具有单向关系时,这非常重要,因为只有With
方法具有无参数重载。
想象一下,你没有Grade.Students
财产。然后你只能使用:
modelBuilder.Entity<Student>()
.HasRequired(s => s.Grade)
.WithMany();
如果您没有Student.Grade
财产,那么您只能使用:
modelBuilder.Entity<Grade>()
.HasMany(s => s.Students)
.WithRequired();
答案 1 :(得分:1)
你只需要一个。这对于1 : M
关系来说已经足够了。
modelBuilder.Entity<Student>()
.HasRequired<Grade>(s => s.Grade) //Student entity requires Grade
.WithMany(s => s.Students); //Grade entity includes many Students entities