[ad_1]
問題なく動作するコード ブロックがありますが、それを見て困っています。データベース内のレコード数を取得するには、より単純な方法またはよりクリーンな方法が必要です。 約 10 件のレコード合計を含むダッシュボードを作成したいと考えています。より単純なコード アプローチがあれば、道をたどりたくありません。 どんな考えでも大歓迎です!
私が試したこと:
{ private readonly ApplicationDbContext _context; public int blogCount; public IList<Model.Blog> Blog { get; set; }; public IndexModel(ApplicationDbContext context) { _context = context; } public async Task OnGetAsync() { if (_context.Blog != null) { Blog = await _context.Blog .ToListAsync(); blogCount = Blog.Count(); ViewData["BlogCount"] = blogCount.ToString(); } } }
解決策 1
クエリは、EF に、Blog テーブルからすべてのレコードを取得するように指示しています。それらをカウントするのではありません。 それが .ToListAsync 呼び出しが行っていることです。
使用している EF のバージョンについては言及していないため、これは 1 つの可能性にすぎません。 カウントだけが必要な場合は、代わりに生の SQL クエリを実行できます。
var count = _context.Database.FromSql($"SELECT COUNT(fieldName) FROM Blog").ToList();
解決策 2
EF 6.0.10 が現在使用されているバージョンです
var count = _context.Blog.FromSqlRaw($"SELECT COUNT(bId) FROM Blog").ToList(); ViewData["BlogCount"] = blogCount.ToString();
SSMS でクエリを実行すると、SQL は正常に動作しますが、エラーが発生します
プログラムの実行時:
見積もり:InvalidOperationException: 必要な列 ‘BlogID’ が ‘FromSql’ 操作の結果に存在しませんでした
[ad_2]
コメント