私は何か間違ったことをしているのか、Entity Frameworkがこれを行うつもりがないのかを判断しようとしています。私は、LINQスタイルのクエリを実行して、子要素のリストを含め、オブジェクトを生成したいと考えています。 Linq2SQLでは、これは有効であり、結果が効率的なSQL照会に変換され、その結果が新しいリストに移入されます。 Entity Frameworkのではエンティティフレームワークはクエリで非エンティティクラスを使用できませんか?
class ReportItem
{
string Manager; /* ... */
List<string> Employees; /* ... */
}
var report = (from manager in entities.Managers
select new ReportItem()
{
Manager = manager.Name,
Employees = manager.Employees.Select(e => e.Name).ToList()
}).ToList();
従業員数ラインmethod cannot be translated into a store expression
エラーになります - Entity Frameworkのは、それがどのデータベース側のロジックを必要としないにもかかわらず、LINQ文の内部で非エンティティクラスを構築したいとしていないようです。
変更トラッキングエンティティクラスが使用されていますが、は任意のクラスに情報を読み込むことはできません。すべての読み込みシナリオでエンティティとデータベースビューを構築する必要はなく、nameプロパティのようなものを読み込むためにパイプ全体(半分のEmployeeまたはManagerエンティティ)に半分のデータベースを送信したくありません。
Entity Frameworkでこのような「怠慢だが効率的な」クエリを実行することは可能ですか、それとも念頭に置かれていないEntity Frameworkですか?私はすでに、Linq2SQLからEntity Frameworkにプロジェクトを変換するいくつかの問題に直面しています。
残念ながら匿名型プロジェクトが考えられたが、私の場合、従業員と列挙のリストとの違い意味があった。しかし、これはまだEFの設計された行動についての私の本当の疑問に答える。ありがとうございました – David