我是否需要使用Fluent API配置与Entity Framework的关系的双方?

use*_*980 4 entity-framework ef-fluent-api

我是Fluent API的新手。在我的情况下,一个Student可以合而为一Grade,一个Grade可以有多个Students。然后,这两个语句完成相同的操作:

modelBuilder
.Entity<Student>()
.HasRequired<Grade>(s => s.Grade)
.WithMany(s => s.Students);
Run Code Online (Sandbox Code Playgroud)

和:

modelBuilder
.Entity<Grade>()
.HasMany<Student>(s => s.Students)
.WithRequired(s => s.Grade);
Run Code Online (Sandbox Code Playgroud)

我的问题是-我应该如何选择一个陈述而不是另一个?还是我需要两个陈述?

Iva*_*oev 6

对于像您这样的双向关系(即两端都具有导航属性),这并不重要,您可以使用一个或另一个(您也可以使用两者,但是不建议这样做,因为它是多余的,并且可能导致不同步两者之间)。

当您具有单向关系时,这真的很重要,因为只有With方法才具有无参数重载。

假设您没有Grade.Students财产。然后,您只能使用:

modelBuilder.Entity<Student>()
    .HasRequired(s => s.Grade)
    .WithMany();
Run Code Online (Sandbox Code Playgroud)

如果您没有Student.Grade财产,则只能使用:

modelBuilder.Entity<Grade>()
    .HasMany(s => s.Students)
    .WithRequired();
Run Code Online (Sandbox Code Playgroud)