0

Dapper との同一性。

ID のユーザーのタイプは 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 です。しかし、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());
    }
4

1 に答える 1