.net FluentAPI定义源实体或目标实体上的关系?

.net FluentAPI定义源实体或目标实体上的关系?,.net,.net-core,ef-fluent-api,.net,.net Core,Ef Fluent Api,直到现在,我还在两个实体上定义关系。但通过查看EF Core Fluent API文档,我发现在大多数情况下,您可以在一个实体上定义关系 我们有实体城镇和学校(城镇有许多学校)。现在,您可以在数据配置中定义: // Town Configuration builder .HasMany(s => s.Schools) .WithOne(t => t.Town) .HasForeignKey(t => t.TownId) .OnDelete(DeleteBehaviour.Set

直到现在,我还在两个实体上定义关系。但通过查看EF Core Fluent API文档,我发现在大多数情况下,您可以在一个实体上定义关系

我们有实体城镇和学校(城镇有许多学校)。现在,您可以在数据配置中定义:

// Town Configuration
builder
.HasMany(s => s.Schools)
.WithOne(t => t.Town)
.HasForeignKey(t => t.TownId)
.OnDelete(DeleteBehaviour.SetNull());
// School Configuration
builder
.HasOne<Town>(s => s.Town)
.WithMany(t => t.Schools)
.HasForeignKey(s => s.TownId)
.OnDelete(DeleteBehaviour.SetNull());
或者您可以转到数据配置:

// Town Configuration
builder
.HasMany(s => s.Schools)
.WithOne(t => t.Town)
.HasForeignKey(t => t.TownId)
.OnDelete(DeleteBehaviour.SetNull());
// School Configuration
builder
.HasOne<Town>(s => s.Town)
.WithMany(t => t.Schools)
.HasForeignKey(s => s.TownId)
.OnDelete(DeleteBehaviour.SetNull());
//学校配置
建设者
.HasOne(s=>s.Town)
.有很多(t=>t学校)
.HasForeignKey(s=>s.TownId)
.OnDelete(deleteBehavior.SetNull());
直到现在,我还在机器人实体中定义这种关系,但它可能没有必要。所以我的问题是,什么是最佳实践?在源实体、目标实体或两者上定义它

谢谢