如何为 Entity Framework 中的外键列使用自定义 属性 名称

How to use custom property name for foreign key column in Entity Framework

出于某种原因,我似乎无法在任何地方找到此信息,但觉得这很常见。我原来有这个 class:

public class SiteSharingPermission
{
    [Required]
    public Guid Id { get; set; }

    public Guid OrganizationId { get; set; }
    public Organization Organization { get; set; }
}

我最近需要修改此列/属性 (OrganizationId -> PartnerOrganizationId),但我在更新外键列 属性 名称时遇到问题。

我尝试了 运行 迁移,将 up/down 修改为:

    protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.DropForeignKey(
            name: "FK_SiteSharingPermissions_Organizations_OrganizationId",
            table: "SiteSharingPermissions");

        migrationBuilder.RenameColumn(
            name: "OrganizationId",
            table: "SiteSharingPermissions",
            newName: "PartnerOrganizationId");

        migrationBuilder.AddForeignKey(
            name: "FK_SiteSharingPermissions_Organizations_PartnerOrganizationId",
            table: "SiteSharingPermissions",
            column: "PartnerOrganizationId",
            principalTable: "Organizations",
            principalColumn: "Id",
            onDelete: ReferentialAction.Restrict);
    }

    protected override void Down(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.DropForeignKey(
            name: "FK_SiteSharingPermissions_Organizations_PartnerOrganizationId",
            table: "SiteSharingPermissions");

        migrationBuilder.RenameColumn(
            name: "PartnerOrganizationId",
            table: "SiteSharingPermissions",
            newName: "OrganizationId");

        migrationBuilder.AddForeignKey(
            name: "FK_SiteSharingPermissions_Organizations_OrganizationId",
            table: "SiteSharingPermissions",
            column: "OrganizationId",
            principalTable: "Organizations",
            principalColumn: "Id",
            onDelete: ReferentialAction.Cascade);
    }

但是当我试图从这个 table:

中获取结果时,我总是收到错误消息

Unknown column 's.OrganizationId' in field list

有什么想法吗?

我个人不喜欢对迁移文件进行更改。而是做如下的事情。

public class SiteSharingPermission
{
   [Required]
   public Guid Id { get; set; }

   public Guid PartnerOrganizationId { get; set; }
   [ForeignKey("PartnerOrganizationId")]
   public Organization Organization { get; set; }
}

您也可以使用 Fluent API 方法。