C# Identity UserManager CreateAsync 然后 FindByEmailAsync returns Id=0 的用户
C# Identity UserManager CreateAsync then FindByEmailAsync returns User with Id=0
与 Dapper 的身份。
我的身份中的用户类型为 IUser< int >
当用户注册时,我在我的 AccountController 中创建了一个用户:
注册POST:
if (ModelState.IsValid)
{
user = new MySiteUserRecord
{
UserName = model.UserName,
AccessFailedCount = 0,
ApplicationName = "Portal",
Description = string.Empty,
PhoneNumber = model.PhoneNumber ?? string.Empty,
Email = model.Email
};
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
...
如果成功,我需要获取新创建的用户记录,因为上面出现的'new'用户class还不知道它的ID是什么...
user = await UserManager.FindByNameAsync(model.UserName);
当我查看这条找到的用户记录时,user.Id = 0。
但是如果我查看数据库,这个新创建的用户所在的行就是下一个 ID,例如 9
即使我直接进行 Db 查询,而不是使用 UserManager 的 FindByNameAsync 函数,返回的 Id 始终为 0。
我真的很困惑 - 我可能错过了一些东西...
我需要做什么来获取具有分配的 DB Id 的用户记录?
编辑:我的查找用户功能是:
Task<MySiteUserRecord> IUserStore<MySiteUserRecord, int>.FindByNameAsync(string userName)
{
var predicate = Predicates.Field<MySiteUserRecord>(f => f.UserName, Operator.Eq, userName);
return Task.Factory.StartNew(() => _sqlConn.GetList<MySiteUserRecord>(predicate).FirstOrDefault());
}
我的用户 class 的映射器 class 专门告诉 DapperExtensions 忽略我的 Id 字段。使用其他 Dapper 扩展时必须小心,并且需要调查它们如何与您的系统交互。
与 Dapper 的身份。
我的身份中的用户类型为 IUser< int >
当用户注册时,我在我的 AccountController 中创建了一个用户:
注册POST:
if (ModelState.IsValid)
{
user = new MySiteUserRecord
{
UserName = model.UserName,
AccessFailedCount = 0,
ApplicationName = "Portal",
Description = string.Empty,
PhoneNumber = model.PhoneNumber ?? string.Empty,
Email = model.Email
};
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
...
如果成功,我需要获取新创建的用户记录,因为上面出现的'new'用户class还不知道它的ID是什么...
user = await UserManager.FindByNameAsync(model.UserName);
当我查看这条找到的用户记录时,user.Id = 0。 但是如果我查看数据库,这个新创建的用户所在的行就是下一个 ID,例如 9 即使我直接进行 Db 查询,而不是使用 UserManager 的 FindByNameAsync 函数,返回的 Id 始终为 0。
我真的很困惑 - 我可能错过了一些东西...
我需要做什么来获取具有分配的 DB Id 的用户记录?
编辑:我的查找用户功能是:
Task<MySiteUserRecord> IUserStore<MySiteUserRecord, int>.FindByNameAsync(string userName)
{
var predicate = Predicates.Field<MySiteUserRecord>(f => f.UserName, Operator.Eq, userName);
return Task.Factory.StartNew(() => _sqlConn.GetList<MySiteUserRecord>(predicate).FirstOrDefault());
}
我的用户 class 的映射器 class 专门告诉 DapperExtensions 忽略我的 Id 字段。使用其他 Dapper 扩展时必须小心,并且需要调查它们如何与您的系统交互。