2017-12-30 58 views
0

にカスタムフィールドを保存していない私はApplicationUserを使用して、ASPNETアイデンティティを設定し、.NETのコア2 MVCプロジェクトを持っている:このアクションでアイデンティティのUserManager UpdateAsyncがデータベース

public class ApplicationUser : IdentityUser 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

私は姓を取得し、そして、フォームからの姓は、データベースに保存したい:

private readonly UserManager<ApplicationUser> _userManager; 

... 

var user = _userManager.GetUserAsync(User).Result; 
user.FirstName = model.FirstName; 
user.LastName = model.LastName; 

var result = _userManager.UpdateAsync(user).Result; 

すべてがカスタムフィールドを保存するために_userManager.UpdateAsync(user)を使用する以外は(など、パスワードをリセットし、パスワードを更新する)動作します。返されるresult.Succeededは常にtrueですが、変更はデータベースに保存されません。

私はここで間違っていますか?

編集: デバッグコンソールは、カスタムフィールドを欠いUpdateAsyncための次の更新クエリを、出力:完全性については

UPDATE [AspNetUsers] SET [AccessFailedCount] = @p0, [ConcurrencyStamp] = @p1, [Email] = @p2, [EmailConfirmed] = @p3, [FirstName] = @p4, [LastName] = @p5, [LockoutEnabled] = @p6, [LockoutEnd] = @p7, [NormalizedEmail] = @p8, [NormalizedUserName] = @p9, [PasswordHash] = @p10, [PhoneNumber] = @p11, [PhoneNumberConfirmed] = @p12, [SecurityStamp] = @p13, [TwoFactorEnabled] = @p14, [UserName] = @p15

+0

カスタムプロパティを追加した後で移行を生成しました –

+0

はい、ありました。ダブルチェックと列はDBに存在します – MysticEarth

+1

GetUserAsyncで待機することができます – sheavens

答えて

0

、私は答えとして私のコメントを投稿します。 GetUserAsync関数は、FirstNameとLastNameを設定しても実行されています。 GetUserAsyncメソッドを待機すると、Async関数が完了するのを待ってからコードを続行します。

+0

OPは結果を待つ '.Result'を呼び出しています(ただしブロッキング呼び出しであり、デッドロックが発生する可能性もありますが、これは問題ではありません) – Tseng

関連する問題