有没有办法强制外键的列名使用 _ID 约定?

Is there a way to force _ID convention for the column name of a foreign key?

我想在前一段时间使用 .net 框架创建的旧数据库上使用新的 .net core 5 winforms,entity framework xaf 应用程序。

在我的数据库中,安全性 table 的外键具有类似 Role_ID 的名称,而新应用程序需要像 RoleId

这样的名称

有没有一种方法可以在不更改控制安全 table 结构的 Dev Express 代码的情况下实现 _ID 约定?

例如,我没有用于 PermissionPolicyMemberPermissionsObject 的 DBSet,因为框架应用程序从来不需要它。

在 OnModelCreating 我有

    modelBuilder.Entity<PermissionPolicyMemberPermissionsObject>()
        .ToTable("PermissionPolicyMemberPermissionsObjects")
        .HasOne<PermissionPolicyTypePermissionObject>().WithMany().HasForeignKey("TypePermissionObject_ID");

但是,如果我允许创建新数据库,table 会创建一个 TypePermissionObject_ID 字段和一个 TypePermissionObjectID 字段。

如果我尝试访问只有 TypePermissionObject_ID 字段的旧数据库,我会收到错误消息,指出缺少 TypePermissionObjectID。

我的目标是 net5.0

   <PackageReference Include="DevExpress.ExpressApp" Version="21.2.5" />
    <PackageReference Include="DevExpress.ExpressApp.CodeAnalysis" Version="21.2.5" />
    <PackageReference Include="DevExpress.ExpressApp.ConditionalAppearance" Version="21.2.5" />
    <PackageReference Include="DevExpress.ExpressApp.EFCore" Version="21.2.5" />
    <PackageReference Include="DevExpress.ExpressApp.Validation" Version="21.2.5" />
    <PackageReference Include="DevExpress.Persistent.Base" Version="21.2.5" />
    <PackageReference Include="DevExpress.Persistent.BaseImpl.EFCore" Version="21.2.5" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="5.0.13" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.13" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="5.0.13" />

[更新] 在学习 之后,我尝试了

这样的语句
    modelBuilder.Entity<PermissionPolicyActionPermissionObject>()
        .ToTable("PermissionPolicyActionPermissionObjects")
        .HasOne<PermissionPolicyRoleBase>().WithMany().HasForeignKey("RoleID");

但是我不知道如何设置列名。 我尝试添加

modelBuilder.Entity() .属性("RoleID").HasColumnName("Role_ID");

但这创建了一个名为 RoleID1 的附加字段

以下模式有效。

    modelBuilder.Entity<PermissionPolicyActionPermissionObject>()
        .ToTable("PermissionPolicyActionPermissionObjects")
        .HasOne<PermissionPolicyRoleBase>(x=>x.Role).WithMany(y=>y.ActionPermissions).HasForeignKey("RoleID");

    modelBuilder.Entity<PermissionPolicyActionPermissionObject>()
       .Property<int?>("RoleID").HasColumnName("Role_ID");