Entity Framework - 更改了生成的 field/column 名称
Entity Framework - changed generated field/column name
我有一个由 Entity Framework (6) 在运行时生成的外键字段。该字段与 interfaces T 字段相关。所以我们最终得到一个名为 InterfaceFieldName_Id
的字段 - 我想将其重命名(最好通过 Fluent API)为 TypeFieldName_Id
。我知道如何通过将 FK Id 字段添加到 POCO class 来做到这一点,但我不想那样做。
有没有办法重命名这个生成的字段名称?
您可以流畅地指定列名:
modelBuilder.Entity<YourEntity>()
.HasRequired(c => c.InterfaceFieldName)
.WithMany(d => d.YourColumnName)
.HasForeignKey(c => c.FieldName);
您可以使用 Map
方法重命名模型中未定义的 外键 :
modelBuilder.Entity<Entity1>()
.HasRequired(c => c.Entity2NavProperty)
.WithMany(t => t.Entity1NavigationProperty)
.Map(m => m.MapKey("TypeFieldName_Id"));
如果你的模型中已经有一个代表 FK 的 属性 并且它在你的数据库中被 EF 重命名,那么你应该检查你的 relationship.Code 首先回退到自动引入一个数据库,以防外键 属性 未按惯例发现,并且 none 已配置。如果外键 属性 被命名为 [Target Type Key Name]
、[Target Type Name] + [Target Type Key Name]
或 [Navigation Property Name] + [Target Type Key Name]
,则将按照约定被发现。
现在要明确配置您要使用的 FK 属性,您可以执行以下操作:
modelBuilder.Entity<Entity1>()
.HasRequired(c => c.Entity2NavProperty)
.WithMany(t => t.Entity1NavigationProperty)
.HasForeignKey(d => d.TypeFieldName);
如果您想在数据库中为 TypeFieldName
使用不同的名称,那么您也可以这样做:
modelBuilder.Entity<Entity1>().Property(d=>d.TypeFieldName).HasColumnName("TypeFieldName_Id")
我有一个由 Entity Framework (6) 在运行时生成的外键字段。该字段与 interfaces T 字段相关。所以我们最终得到一个名为 InterfaceFieldName_Id
的字段 - 我想将其重命名(最好通过 Fluent API)为 TypeFieldName_Id
。我知道如何通过将 FK Id 字段添加到 POCO class 来做到这一点,但我不想那样做。
有没有办法重命名这个生成的字段名称?
您可以流畅地指定列名:
modelBuilder.Entity<YourEntity>()
.HasRequired(c => c.InterfaceFieldName)
.WithMany(d => d.YourColumnName)
.HasForeignKey(c => c.FieldName);
您可以使用 Map
方法重命名模型中未定义的 外键 :
modelBuilder.Entity<Entity1>()
.HasRequired(c => c.Entity2NavProperty)
.WithMany(t => t.Entity1NavigationProperty)
.Map(m => m.MapKey("TypeFieldName_Id"));
如果你的模型中已经有一个代表 FK 的 属性 并且它在你的数据库中被 EF 重命名,那么你应该检查你的 relationship.Code 首先回退到自动引入一个数据库,以防外键 属性 未按惯例发现,并且 none 已配置。如果外键 属性 被命名为 [Target Type Key Name]
、[Target Type Name] + [Target Type Key Name]
或 [Navigation Property Name] + [Target Type Key Name]
,则将按照约定被发现。
现在要明确配置您要使用的 FK 属性,您可以执行以下操作:
modelBuilder.Entity<Entity1>()
.HasRequired(c => c.Entity2NavProperty)
.WithMany(t => t.Entity1NavigationProperty)
.HasForeignKey(d => d.TypeFieldName);
如果您想在数据库中为 TypeFieldName
使用不同的名称,那么您也可以这样做:
modelBuilder.Entity<Entity1>().Property(d=>d.TypeFieldName).HasColumnName("TypeFieldName_Id")