私は内のカスタムメソッドをモデルクラスを持っています。私のリポジトリ層では、の利用可能なメソッド(例:ToListAsync()
)を使用して非同期クエリを実行しようとしています。 LINQ to Entities does not recognize "ToListViewModel()" method [...]
:私は次のコードを呼び出すしようとすると、しかし、...非同期操作
Context.Categories.Select(c => c.ToListViewModel()).ToListAsync();
コンパイラは、メッセージに文句を言います。
IEnumerable
は、このメソッドを実装していないので、私は、ToListAsync()
を呼び出すことはできませんが、私は...
Context.Categories.AsEnumerable().Select(c => c.ToListViewModel())
...クエリがメソッドをサポートするために次のことを行うことができます。
私のクエリを非同期に保ち、そのメソッドを上記のように呼び出す方法はありますか?何かご意見は?
ありがとうございました!他のすべてのエンティティへのLINQは、実際のSQLステートメントにクエリを変換できるようにしているとして、それが適切に生成することができるので、投影インライン
Context.Categories.Select(c => new CategoryListViewModel {
Id = c.Id,
Name = c.Name
}).ToListAsync();
を行い、その後失敗した場合
エンティティクエリへのlinqは、 'Context.Categories.AsEnumerable()'で終了します。それ以降の呼び出しはオブジェクトへのlinqであるため、投影が機能する理由 – Nkosi
**拡張メソッド**であり、ToListViewModelはそうではありません。 –
一般的な方法と拡張方法のどちらでも動作しません。私はそれを動作させるために "AsEnumerable()"を呼び出す場合のみ。しかし、この場合、私は非同期の力を失います。 – Kiwanax