gpt4 book ai didi

c# - DbInitializer 失败,必须在根类型上配置 key

转载 作者:行者123 更新时间:2023-12-01 10:19:27 26 4
gpt4 key购买 nike

我最近将我们的 .NET 1.1.4 代码迁移到了 .NET 2.0.0 一切似乎都运行良好。现在,我尝试通过以下方式添加新模型/表:

dotnet ef update

我得到以下异常:

DbInitializer failed! A key cannot be configured on 'ApplicationUser' because it is a derived type. The key must be configured on the root type 'IdentityUser'

我有一个扩展 IdentityUser 的 ApplicationUser 和扩展 IdentityRole 的 ApplicationRole,这是其他一些教程/stackoverflow 帖子所说的。

我不确定我还遗漏了什么。

在我的 ApplicationUser 类中,我有:
ICollection<IdentityUserRole<string>>

是否必须是像 ApplicationUserRole 这样的自定义类型? IdentityUserRole 和 IdentityRole 有什么区别?


编辑:
我认为这可能是因为在我的 context.cs 文件中 OnModelCreating我有:

builder.Entity<ApplicationUser>()
.ToTable("AspNetUsers")
.HasKey(x => x.Id);

在这里Id继承自 IdentityUser .


编辑 2:
所以我注释掉了那一行,那个错误就消失了。它转到下一行,这基本上是相同的,但我的 ApplicationRole 扩展了 IdentityRole。我不太确定这是什么意思。我需要覆盖 id 属性吗?


编辑 3:
好的,所以我将 builder.Entity 中的类型更改为 IdentityUserIdentityRole .为什么在 startup.cs 中我必须使用 ApplicationUser 时修复它和 ApplicationRole打电话时 services.AddIdentity<ApplicationUser, ApplicationRole>

最佳答案

听起来您在项目中的某处引用了 IdentityUser。

Ctrl + F “IdentityUser”整个解决方案,然后将对 IdentityUser 的任何和所有引用更改为 ApplicationUser(除了您在 ApplicationUser 类中从它派生的地方)。

希望对你有帮助

关于c# - DbInitializer 失败,必须在根类型上配置 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49702009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com