C # ID UserManager CreateAsync, FindByEmailAsync는 Id가 0 인 사용자를 반환합니다.

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

문제

Dapper와의 신원.

내 ID의 내 사용자 유형이 IUser입니다 <int>

사용자가 등록 할 때 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입니다. 그러나 DB를 보면이 새로 생성 된 사용자의 행은 다음 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());
    }

수락 된 답변

내 사용자 클래스의 매퍼 클래스는 내 Id 필드를 무시하도록 DapperExtensions에 특별히 지시했습니다. 다른 Dapper 확장을 사용할 때는 조심해야하며 시스템과 어떻게 상호 작용하는지 조사해야합니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.