繁体   English   中英

如何在实体框架中为外键列使用自定义属性名称

[英]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 ),但我在更新外键列属性名称时遇到了迁移问题。

我尝试运行迁移,将向上/向下修改为:

    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);
    }

但是在尝试从该表中获取结果时,我不断收到错误消息:

字段列表中的未知列“s.OrganizationId”

有任何想法吗?

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

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

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

您也可以使用 Fluent API 方法来完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM