C# 如何使用Entity Framework 7通过fluent API指定外键列名?

C# 如何使用Entity Framework 7通过fluent API指定外键列名?,c#,entity-framework,C#,Entity Framework,我正在试用实体框架7,来自EF6。我正在使用一个现有的数据库,手动编写模型配置(不通过EF使用反向工程模式),因为我已经有一个包含所有必要实体类的项目。我试图找出如何为HasOne关系指定列名。正在生成的查询使用了HasOne中使用的属性的错误名称。这是我对这个特殊型号的配置 modelBuilder.Entity<Season>(season => { season.ForNpgsqlToTable("season"); season.HasKey(m =&

我正在试用实体框架7,来自EF6。我正在使用一个现有的数据库,手动编写模型配置(不通过EF使用反向工程模式),因为我已经有一个包含所有必要实体类的项目。我试图找出如何为
HasOne
关系指定列名。正在生成的查询使用了
HasOne
中使用的属性的错误名称。这是我对这个特殊型号的配置

modelBuilder.Entity<Season>(season =>
{
    season.ForNpgsqlToTable("season");

    season.HasKey(m => m.Id);
    season.Property(m => m.Id)
          .HasColumnName("id");
    season.Property(m => m.Name)
          .HasColumnName("name");
    season.Property(m => m.Slug)
          .HasColumnName("slug");
    season.Property(m => m.DateEnd)
          .HasColumnName("date_end");
    season.Property(m => m.DateStart)
          .HasColumnName("date_start");
    season.Property(m => m.DateCreated)
          .HasColumnName("date_created");
    season.HasOne(m => m.Division)
          .WithMany();
});
modelBuilder.Entity(季节=>
{
季节。用于NPGSQLTOTABLE(“季节”);
HasKey(m=>m.Id);
季节属性(m=>m.Id)
.姓名(“id”);
seasure.Property(m=>m.Name)
.姓名(“姓名”);
季节属性(m=>m.Slug)
.HasColumnName(“slug”);
季节属性(m=>m.DateEnd)
.HasColumnName(“日期”);
seasure.Property(m=>m.DateStart)
.HasColumnName(“开始日期”);
station.Property(m=>m.DateCreated)
.HasColumnName(“创建日期”);
季节。哈桑(m=>m分区)
.有许多();
});
当调度对此实体的查询时,除了外键外,其他列都是正确的,外键只是使用默认的“DivisionId”命名生成,而实际上该列只需要是“division”


如何使用fluent API指定列名?

根据我的经验,EF 7似乎还没有准备好将类引用映射到外键,我认为以下方法可行,但到目前为止:

season.Property<Division>("Division")
                .ForSqlServerHasColumnName("division");

为什么要通过fluent api而不是注释来实现这一点?我试图在实体类中保留与SQL相关的底层细节。是的,正如您所建议的,我只是为id本身添加了特定属性。这似乎是最受支持、最直接的方法。谢谢
season.Property(e => e.DivisionId)
                 .ForSqlServerHasColumnName("division");