c# - 从 .NET 2 转换为 .NET 3.0 后出现 InvalidOperationException
问题描述
我从 .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);
}
}
错误堆栈如下所示:
CancellationToken cancelToken) Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserOnlyStore.FindByNameAsync(string normalizedUserName, CancellationToken cancelToken) Microsoft.AspNetCore.Identity.UserManager.FindByNameAsync(string userName) Microsoft.AspNetCore.Identity.SignInManager.PasswordSignInAsync(string userName, string password, bool isPersistent, bool lockoutOnFailure) ImSmart.Controllers.AccountController.Login(LoginViewModel model, string returnUrl) in AccountController.cs + var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, false, lockoutOnFailure: true); Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper 映射器,ObjectMethodExecutor 执行器,对象控制器,
我可能会错过什么?
解决方案
最后的答案是回到IdentityUser
而不是ApplicationUser
。这意味着我还必须在我使用SignInManager<ApplicationUser>
和UserManager<ApplicationUser>
toSignInManager<IdentityUser>
和UserManager<IdentityUser>
.
在这些更改之后,登录工作正常。
推荐阅读
- image - Hugo:如何在我的帖子列表中显示图片
- django - 在 django 数据库中添加自定义列
- .net - ClickOnce 应用程序重新下载
- git - Git:Cherry-pick 添加不在提交中的代码
- tensorflow - 我如何在 tensorflow 1.x 中使用 colab 的 TPU 关于 tensorflow 2.x 的代码?
- html - 使用 jQuery 在具有类的范围内隐藏字符
- c# - 动态更改图像源 (StaticResource)
- django - 为应用程序的 Django Admin Listview 生成行号
- java - 如何让我的 JLabel 图标图像具有高分辨率?
- r - R:if_else 和时区强制