我在这里寻找一些指导......我有一个旧的ASP.NET webforms网站,它有一个现有的数据库和SQL Server成员资格,我正在使用ASP.NET MVC创建一个新的界面实体框架采用数据库优先方法。
所以我有如下表所示的表格:
我的问题是,我不确定如何在新的ASP.NET MVC应用程序中使用这些旧的成员资格表进行身份验证。
我不介意将用户/角色数据迁移到ASP.NET身份还是继续使用旧的成员资格数据库,但我不确定最佳方法是什么。我想我更愿意迁移数据,因为我更熟悉Identity。
我尝试过的事情......
在搜索解决方案时,我已经多次遇到过这个问题:Migrating an Existing Website from SQL Membership to ASP.NET Identity,但是这一点(以及我迄今为止发现的大部分内容)都在谈论升级现有的webforms网站以使用asp.net身份。我已经尝试使用它的一部分将会员数据迁移到asp.net身份,但当然剩下的指示不适合我的场景。
所以我现在在这里。
我使用上面链接的演练中的SQL脚本将成员资格数据迁移到asp.net身份表。
我已按照演练中的说明设置了SQLPasswordHasher,因为我认为我需要使用该功能来使用现有登录。
我将这些表导入到包含网站数据的数据库中,希望我只需要处理一个连接字符串。
我修改了ApplicationDbContext : base
...以使用该数据库(之前使用的是DefaultConnection(LocalDb)
所以现在我将这些表填充了数据:
Aaand我被困住了。
我完全有可能错过一些基本的东西,但无论如何,如果我尝试登录或注册新用户,我会收到错误:
实体类型ApplicationUser不是当前上下文模型的一部分。
就行:
var result = await UserManager.CreateAsync(user, model.Password);`
我唯一能够找到该错误的解决方案就是代码优先项目:与迁移有关的事情,我没有使用(我确实尝试了但收到了错误)启用 - 迁移"不支持从使用数据库优先或模型优先创建的DbContext
创建DbModelBuilder或编写EDMX。")
更新
好的,所以我遇到了关于The entity type ApplicationUser is not part of the model for the current context.
错误的答案,显然使用实体框架生成的连接字符串可能会有问题,所以建议我做一个正常的'连接字符串,这似乎越来越近了!
更新2
我认为我有它工作,但在使用我的解决方案进行更新之前会进行一些测试。
答案 0 :(得分:1)
请按照以下步骤执行此操作。
希望这会对你有帮助!