Entity Framework更新数据库时ApplicationUser继承IdentityUser类导致的错误

问题描述 投票:0回答:1

我正在尝试在我的 ApplicationUser 和 Transactions 模型之间建立一对多关系。 ApplicationUser 使用以下附加属性扩展 IdentityUser:

 public class ApplicationUser : IdentityUser
    {
        public ICollection<Transactions> Transactions { get; set; }
    }

这是我的交易模型:

public class Transactions
    {
        public int Id { get; set; }
        public int PhoneId { get; set; }
        public Phone Phone { get; set; }
        public int CustomerId { get; set; }
        public Customers Customer { get; set; }
        public string UserId { get; set; }
        public ApplicationUser User { get; set; }
        public TransactionType TransactionType { get; set; }
        public DateTime TransactionDate { get; set; }
        public decimal TransactionAmount { get; set; }
    }

当我添加新的迁移时,除了创建新表和所有内容外,我还更改了数据库中的这些列:

            migrationBuilder.AlterColumn<string>(
                name: "Name",
                table: "AspNetUserTokens",
                type: "nvarchar(128)",
                maxLength: 128,
                nullable: false,
                oldClrType: typeof(string),
                oldType: "nvarchar(450)");

            migrationBuilder.AlterColumn<string>(
                name: "LoginProvider",
                table: "AspNetUserTokens",
                type: "nvarchar(128)",
                maxLength: 128,
                nullable: false,
                oldClrType: typeof(string),
                oldType: "nvarchar(450)");

            migrationBuilder.AddColumn<string>(
                name: "Discriminator",
                table: "AspNetUsers",
                type: "nvarchar(max)",
                nullable: false,
                defaultValue: "");

            migrationBuilder.AlterColumn<string>(
                name: "ProviderKey",
                table: "AspNetUserLogins",
                type: "nvarchar(128)",
                maxLength: 128,
                nullable: false,
                oldClrType: typeof(string),
                oldType: "nvarchar(450)");

            migrationBuilder.AlterColumn<string>(
                name: "LoginProvider",
                table: "AspNetUserLogins",
                type: "nvarchar(128)",
                maxLength: 128,
                nullable: false,
                oldClrType: typeof(string),
                oldType: "nvarchar(450)");

当我尝试更新我的数据库时,我得到这个错误:

错误编号:5074,状态:1,类别:16 对象“PK_AspNetUserTokens”依赖于“名称”列。 ALTER TABLE ALTER COLUMN Name 失败,因为一个或多个对象访问此列。

我用 ChatGPT 运行它,它建议如下:

在尝试更新“名称”列之前,您需要先删除“AspNetUserTokens”表上的主键约束。以下是您可以执行此操作的步骤:...

但我感兴趣的是有没有其他风险较小的方法来解决这个问题,因为我在数据库管理方面没有那么丰富的经验。

c# asp.net entity-framework asp.net-identity
1个回答
0
投票

我通过完全删除我的数据库并从头开始构建它来解决这个问题。因为我刚开始开发应用程序,所以我能够做到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.