前提・実現したいこと
Identityの認証機能で作成されるユーザ情報のdbo.AspNetUsersのテーブルを一覧表示しようとしていますが、
awaitとToListAsync()がコンパイルエラーになってしまう。
(ToListでなら一覧表示できています)
発生している問題・エラーメッセージ
CS1061 'List<App01StoreFindUser>' に 'GetAwaiter' の定義が含まれておらず、 型 'List<App01StoreFindUser>' の最初の引数を受け付けるアクセス可能な拡張メソッド 'GetAwaiter' が見つかりませんでした。 using ディレクティブまたはアセンブリ参照が不足していないことを確認してください
該当のソースコード
C#
1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Threading.Tasks; 5using Microsoft.AspNetCore.Mvc; 6using Microsoft.AspNetCore.Mvc.RazorPages; 7using App01StoreFind.Areas.Identity.Data; 8 9namespace App01StoreFind.Pages 10{ 11 public class UserListModel : PageModel 12 { 13 private readonly App01StoreFind.Data.App01StoreFind_IdentityContext _context; 14 15 public UserListModel(App01StoreFind.Data.App01StoreFind_IdentityContext context) 16 { 17 _context = context; 18 } 19 public IList<App01StoreFindUser> App01StoreFindUser { get; set; } 20 public void OnGet() 21 { 22 App01StoreFindUser = _context.App01StoreFindUser.ToList(); 23 } 24 public async Task OnGetAsync() 25 { 26 App01StoreFindUser = await _context.App01StoreFindUser.ToListAsync(); //←エラー 27 } 28 } 29}
試したこと
自分で作成したモデルからスキャフォールディングで「EntityFrameworkを使用するRazorページ(CRUD)」で作成できたPages\Index.cshtmlを参考に、AspNetUsersのIndexを作成しようとしました。
C#
1 //App01StoreFindUserは「public class App01StoreFindUser : IdentityUser」で作られてます 2 public class App01StoreFind_IdentityContext : IdentityDbContext<App01StoreFindUser> 3 { 4 public App01StoreFind_IdentityContext(DbContextOptions<App01StoreFind_IdentityContext> options) 5 : base(options) 6 { 7 } 8 public DbSet<App01StoreFind.Areas.Identity.Data.App01StoreFindUser> App01StoreFindUser { get; set; } 9 //↑追加しました 10 protected override void OnModelCreating(ModelBuilder builder) 11 { 12 base.OnModelCreating(builder); 13 } 14 }
これで、1つ目のソースコードのOnGet()のToList()では一覧が取得できています。
補足情報(FW/ツールのバージョンなど)
OnGet()のToList()ではDBにアクセスして一覧が取れるのですが、
OnGetAsync()ではToListAsyncが無いコードが書けません。
自分で作成したモデルのToListAsync()の定義を調べると「EntityFrameworkQueryableExtensions」であり、ToListAsyncがあるのですが、
AspNetUsers(には正確には継承したApp01StoreFindUser)のToList()の定義を調べると「Enumerable」です。
ここの違いでToListAsyncが無いのだとは思うのですが、この違いがどこの時点から起きているのかが良くわかりません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/18 04:19