我正在尝试使用 ApplicationUser 自定义 IdentityUser,我按照微软文章中的步骤操作,但是当我运行应用程序时,我在方法上收到此错误base.OnModelCreating(modelBuilder);
:
System.InvalidOperationException HResult=0x80131509 消息=A 键
无法在“ApplicationUser”上配置,因为它是派生的
类型。必须在根类型“IdentityUser”上配置密钥。如果
您不打算将“IdentityUser”包含在模型中,
确保它不包含在您的上下文的 DbSet 属性中,
在对模型构建器的配置调用中引用,或从
模型中包含的类型的导航属性。
来源=Microsoft.EntityFrameworkCore StackTrace:位于
Microsoft.EntityFrameworkCore.Metadata.Internal.EntityType.SetPrimaryKey(IReadOnlyList1
properties, ConfigurationSource configurationSource) at
Microsoft.EntityFrameworkCore.Metadata.Internal.InternalEntityTypeBuilder.PrimaryKey(IReadOnlyList
1
属性、ConfigurationSource 配置源)位于
Microsoft.EntityFrameworkCore.Metadata.Internal.InternalEntityTypeBuilder.PrimaryKey(IReadOnlyList1
clrProperties, ConfigurationSource configurationSource) at
Microsoft.EntityFrameworkCore.Metadata.Builders.EntityTypeBuilder
1.HasKey(表达式1
keyExpression) at
Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext
5.c__DisplayClass20_0.b__0(EntityTypeBuilder1
b) at
Microsoft.EntityFrameworkCore.ModelBuilder.Entity[TEntity](Action
1
构建动作)在
Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext5.OnModelCreating(ModelBuilder
builder) at
Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext
8.OnModelCreating(模型构建器
建设者)在
Assisente_de_Estagio.Data.ApplicationDbContext.OnModelCreating(模型构建器
modelBuilder) 在 C:\Users\gui\source\repos\Assistancee De
Estágio\Assistancee de Estagio\Data\ApplicationDbContext.cs:第 40 行
在
Microsoft.EntityFrameworkCore.Infrastruct.ModelCustomizer.Customize(模型构建器
modelBuilder、DbContext 上下文)位于
Microsoft.EntityFrameworkCore.Infrastruct.RelationalModelCustomizer.Customize(模型构建器
modelBuilder、DbContext 上下文)位于
Microsoft.EntityFrameworkCore.Infrastruct.ModelSource.CreateModel(DbContext
上下文、IConventionSetBuilder conventionSetBuilder、IModelValidator
验证器)在
Microsoft.EntityFrameworkCore.Infrastruct.ModelSource.c__DisplayClass5_0.b__1()
在System.Lazy`1.ViaFactory(LazyThreadSafetyMode模式)
上下文代码:
public partial class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
{
}
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
public virtual DbSet<Curso> Curso { get; set; }
public virtual DbSet<Documento> Documento { get; set; }
public virtual DbSet<OpcaoRequisito> OpcaoRequisito { get; set; }
public virtual DbSet<ProgressoDoUsuario> ProgressoDoUsuario { get; set; }
public virtual DbSet<Requisito> Requisito { get; set; }
public virtual DbSet<RequisitoDeDocumento> RequisitoDeDocumento { get; set; }
public virtual DbSet<RequisitoDeUsuario> RequisitoDeUsuario { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
应用程序用户.cs
public class ApplicationUser : IdentityUser
{
}
您需要将代码中使用 IdentityUser 的所有位置替换为 ApplicationUser。
例如在脚手架中的 Identity/Pages/Account/注册.cshtml.cs你需要做这些改变:
private readonly SignInManager<IdentityUser> _signInManager;
private readonly UserManager<IdentityUser> _userManager;
To
private readonly SignInManager<ApplicationUser> _signInManager;
private readonly UserManager<ApplicationUser> _userManager;
我遇到了同样的问题。在我将代码中的所有使用 IdentityUser 替换为 ApplicationUser 后,错误消失了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)