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