【问题标题】:C# Identity UserManager CreateAsync then FindByEmailAsync returns User with Id=0C# Identity UserManager CreateAsync 然后 FindByEmailAsync 返回 ID=0 的用户
【发布时间】:2015-06-11 00:39:05
【问题描述】:

与 Dapper 的身份。

我的身份中的用户属于 IUser

类型

当用户注册时,我在我的 AccountController 中创建一个用户:

注册帖子:

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)
    {
       ...

如果成功,我需要获取新创建的用户记录,因为上面显示的“新”用户类还不知道它的 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());
    }

【问题讨论】:

  • 可以把代码贴在FindByNameAsync方法里吗?
  • 我将更新我上面的问题以包含该代码 - 只需一秒钟 - 完成
  • 我也没有看到该代码是问题所在,问题必须在其他地方,也许是您正在使用的 sql 查询?如果您只需要获取新创建实体的 ID,那么我建议您采用这种方法:stackoverflow.com/questions/8270205/…
  • 我在想 DapperExtension 出了点问题——我会得到最新版本的 dapper 和 dapperextensions 看看是不是这样。我还将尝试基本的 Dapper Query 调用。如果这仍然是错误的,那么要么我的类是可疑的,要么我的 SQLMapper 版本被破坏了......
  • 好的,看来问题出在我对 DapperExtensions 的使用上——也许是我的班级?我会看到

标签: dapper sqlconnection asp.net-identity-2 dapper-extensions


【解决方案1】:

我的用户类的映射器类专门告诉 DapperExtensions 忽略我的 Id 字段。使用其他 Dapper 扩展时必须小心,并且需要调查它们如何与您的系统交互。

【讨论】:

    猜你喜欢
    • 2019-08-21
    • 1970-01-01
    • 2020-10-29
    • 2019-07-21
    • 2017-09-01
    • 1970-01-01
    • 2020-11-29
    • 2010-09-16
    • 2020-08-13
    相关资源
    最近更新 更多