0

次のコードがあります

private readonly RoleManager<IdentityRole> _roleManager;

private async Task DoStuff(MyViewModel viewModel)
{
    var roles =  await _roleManager.Roles;
    var mylist = await _myRepository.SelectAll();
}

ただし、ロール マネージャーがサポートする唯一の方法は

public virtual IQueryable<TRole> Roles { get; }

非同期メソッドではありません。

Githubリファレンス

結果は_roleManager.Roles.ToList()メソッドのみになり、ToListAsync()

そのため、コードを次のように変更する必要があります

 var roles =  _roleManager.Roles;

ただし、メソッド自体が非同期であるため、待機しなくなり、予期しない動作が発生するようになりました。

質問:

とにかく、上記の非同期メソッドを引き続き使用できますか

4

1 に答える 1

0

私の知る限り、ロールマネージャーを介してすべてのロールを取得するための非同期メソッドはサポートされていません。

データベースコンテキストを介してロールにアクセスすることで解決できます。

var roles = await this._context.Roles.ToListAsync();
于 2016-11-22T13:24:15.960 に答える