-4

私は、私が持っているデータにユーザーをリンクさせる必要があるところまで達したコア2.0プロジェクトを持っています。これは1人のユーザーのテストベッドとして始まりました。今ではユーザーあたり複数のユーザーが必要です。.NET Framework 2.0のコード - ファースト・アイデンティティ・アプリケーション・ユーザとの関係

ユーザーモデル:

public class ApplicationUser : IdentityUser 
{ 
    public virtual ICollection<Balance> Balances { get; set; } 
} 

収支モデル:

public virtual ApplicationUser User { get; set; } 
... 

ApplicationDbContext.cs:私のコードで

//Users to balances 
builder.Entity<ApplicationUser>() 
     .HasMany(b => b.Balances) 
     .WithOne(u => u.User); 

新しいバランスを作成するときに、私はどのように把握することはできません現在ログインしているユーザーをリンクする:

var myNewBalance = new Balance(); 
myNewBalance.User = User; 
        ^boom 

残高を現在ログインしているユーザーに関連付けるにはどうすればよいですか?

+2

「ブーム」とは何ですか? – lucky

+0

ダウン投票の理由はありますか? –

+0

ブームはエラーのある場所です...それはアメリカの101%で使われる一般的な用語です。 –

答えて

2

質問で強調表示されているUserのプロパティは、ControllerBaseクラスに属するClaimsPrincipalです。 BalanceクラスのUserプロパティはと互換性がなく、ApplicationUserです。あなたはすでにこれを知っていますが、私はあなたが何をする必要があるのか​​を説明するために明示的にしています。

ここではASP.NETコアIDを使用しているため、依存関係注入を使用して利用可能なUserManagerクラスを使用できます。 UserManagerには、対応するApplicationUserClaimsPrincipalを変換できる関数GetUserAsyncが含まれています。ここで

は、いくつかのコードです:

public class SomeController : Controller 
{ 
    private readonly UserManager<ApplicationUser> _userManager; 

    public SomeController(UserManager<ApplicationUser> userManager) 
    { 
     _userManager = userManager; 
    } 

    public async Task<IActionResult> SomeAction() 
    { 
     var myNewBalance = new Balance(); 
     myNewBalance.User = await _userManager.GetUserAsync(User); 

     return View(); // etc, etc. 
    } 
} 

キーポイントは、UserClaimsPrincipal)プロパティを使用して、その後GetUserAsyncの呼び出しをApplicationUserを使用し、一般的なUserManagerの使用です。

関連する問題