C#Identity UserManager CreateAsync然后FindByEmailAsync返回Id = 0的User

asp.net-identity-2 dapper dapper-extensions sqlconnection

与Dapper的身份。

我的Identity中的用户是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)
    {
       ...

如果成功,我需要获取新创建的用户记录,因为上面的“新”用户类不知道它的ID是什么......

       user = await UserManager.FindByNameAsync(model.UserName);

当我查看这个找到的用户记录时,user.Id = 0.但是如果我查看数据库,这个新创建的用户的行就是下一个Id,例如9,即使我做了直接的Db查询,使用UserManager的FindByNameAsync函数,返回的Id始终为0。

我真的很难过 - 我可能错过了一些东西......

要获取具有指定数据库标识的用户记录,我需要做什么?

编辑:我的查找用户功能是:

    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());
    }

一般承认的答案

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



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因