我从.NET 3.0升级了.NET 2.0 Web应用程序。它现在可以编译,但是当我尝试登录时出现错误“ InvalidOperationException:无法为'ApplicationUser'创建DbSet,因为该类型不包含在上下文模型中”。显然,无法完成对数据库的调用,但是我看不到我的错误是什么。
我在Startup.cs(ConfigureServices)中得到了
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<ApplicationUser>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
这是我的ApplicationDBContext.cs:
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
}
错误堆栈的内容如下:
Microsoft.EntityFrameworkCore.Internal.InternalDbSet.get_EntityType() Microsoft.EntityFrameworkCore.Internal.InternalDbSet.CheckState() Microsoft.EntityFrameworkCore.Internal.InternalDbSet.get_EntityQueryable() Microsoft.EntityFrameworkCore.Internal.InternalDbSet.System.Linq.IQueryable.get_Provider() Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ExecuteAsync(MethodInfo operatorMethodInfo,IQueryable源, 表达式表达式,CancellationToken取消Token) Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ExecuteAsync(MethodInfo operatorMethodInfo,IQueryable源, LambdaExpression表达式,CancellationToken取消Token) Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.FirstOrDefaultAsync(IQueryable 源,表达式>谓词,CancellationToken cancelToken) Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore.FindByNameAsync(string normalizedUserName, CancellationToken取消令牌) Microsoft.AspNetCore.Identity.UserManager.FindByNameAsync(string 用户名) Microsoft.AspNetCore.Identity.SignInManager.PasswordSignInAsync(string userName,字符串密码,bool为Persistent,bool lockoutOnFailure) ImSmart.Controllers.AccountController.Login(LoginViewModel模型, AccountController.cs中的字符串returnUrl) + var result = await _signInManager.PasswordSignInAsync(model.Email,model.Password,false,lockoutOnFailure:true); Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor + TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper 映射器,ObjectMethodExecutor执行程序,对象控制器,对象[] 参数)
我可能会缺少什么?
答案 0 :(得分:0)
最后,答案是回到IdentityUser
而不是ApplicationUser
。
这意味着我还必须在使用SignInManager<ApplicationUser>
和UserManager<ApplicationUser>
到SignInManager<IdentityUser>
和UserManager<IdentityUser>
的代码中进行各处更改。
这些更改之后,登录正常。