我有一个新的ASP.Net Core网站,它使用现有的数据库,我已经为其添加了ASP.Net Core Identity用于用户管理 .
由于存在现有的用户表,我只是添加了我已正确添加ASP.Net标识列的表 .
现有表中的其他列位于我的IdentityUser派生类中 . 当我创建新用户以及登录,注销等时,站点逻辑很有效 .
问题是所有现有的“用户”记录(我称之为MyUser)都有空白的核心标识字段,因此对于身份系统调用是不可见的 .
我想编写一个遍历现有MyUser记录的实用程序,如果AspIdentityId字段为null,则将其设置为Identity子系统可管理的记录 .
我基本上是在寻找'创建'调用,但我无法使用UserManager .
CreateAsync因为这会在表中创建一条新记录,所以它不会更新现有记录 .
我有两个DB上下文(IdentityDBContext和OriginalDBContext),所以如果有一些东西允许我生成字段数据,我可以将其添加到表中的列中以用于关联记录 .
1 回答
好吧,我让它工作,不完全确定为什么它工作,似乎AspIdentity字段在它们被提交之前填充 . 我只添加了问题的关键特定更改,DI,上下文的设置等在项目的其他地方 .
基本上,对于每个“域”记录,我创建一个新的ApplicationUser(IdentityUser派生)记录,并将域记录中的自定义字段的值添加到ApplicationUser记录中 . 创建此对象后,它已经填充了必要的Asp.Net Identity字段 . 然后我获取这些字段并将它们填充回域特定记录,然后我保存它 . 完成后,我重新找到记录(这可能没有必要),并根据域记录中已有的纯文本密码添加密码 .
希望这有助于某人,这对我这样做很重要 .