簡體   English   中英

如何使用 Entity Framework 7 通過流暢的 API 指定外鍵列名?

[英]How to specify foreign key column name, via fluent API, with Entity Framework 7?

我正在嘗試來自 EF6 的實體框架 7。 我正在使用現有數據庫,手動編寫模型配置(不通過 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();
});

當對該實體的查詢被調度時,除了外鍵之外的每一列都是正確的,它只是使用“DivisionId”的默認命名生成,而實際上該列只需要是“division”。

如何使用 fluent API 指定列名?

根據我的經驗,EF 7 似乎還沒有准備好將類引用映射到外鍵,我認為以下方法可行,但目前還不行:

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

話雖如此,推薦的方法是映射支持類引用的外鍵屬性,並使用它來配置映射列

season.Property(e => e.DivisionId)
                 .ForSqlServerHasColumnName("division");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM