我正在开发 EF core 2.2 Rest api 项目。我使用 dbfirst 方法和“Scaffold-DbContext”命令创建了模型和上下文。
模型和上下文有效,但我注意到在上下文代码中,外键有显式名称:
modelBuilder.Entity<TrackingPoints>(entity =>
{
entity.HasKey(e => e.IdPosition);
entity.ToTable("myTable");
entity.Property(e => e.CaseId).HasColumnName("CaseId");
entity.HasOne(d => d.IGeoPosition)
.WithMany(p => p.TrackingPoints)
.HasForeignKey(d => d.IPositionId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("FK__Track__iGeoP__278EDA44");
});
Run Code Online (Sandbox Code Playgroud)
(实际表有更多字段,但我保持简短)
我关心的是 FK 名称 (HasConstraintName)。实际上,这段代码包含有关表之间数据关系的信息,但它也有 FK 约束的显式名称。
我注意到,在该数据库的不同实例(开发、预生产...)中,相同的约束具有不同的名称。
我想知道是否必须在数据库的所有实例上为 FK 约束指定相同的名称,或者尽管约束的命名不匹配,映射是否仍能完美地工作。在开发环境中它可以工作,并且 FK 名称与模型中的名称相匹配。在不同的环境中,第一次测试是可以的,但我不知道命名问题是否会产生一些模糊且难以发现的副作用。
mapping naming entity-framework foreign-keys entity-framework-core