如何为 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 方法。
出于某种原因,我似乎无法在任何地方找到此信息,但觉得这很常见。我原来有这个 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 方法。