5

車と写真の2つのエンティティがあります。各写真にはCarの外部キーがあるため、各車には写真のセットがあります。

車のサブセットをいくつかリストしたいのですが、リストされた車ごとに、各写真をすべてリストしたいと思います。

1dbクエリを使用してEntityFrameworkでこれを行うにはどうすればよいですか?私は最初から写真が必要だと知っています。

今のところ私のコードは次のようになります:

var carList = CarEntities.Where(...).ToList();
foreach(var car in carList){
    var photoList = car.Photos.ToList();
}

EFは車ごとに個別にdbクエリを実行すると思います。

4

3 に答える 3

6

Carsにクエリを実行するときに、写真を含めるようにEntityFrameworkに指示できます。

var carList = CarEntities.Include(c => c.Photos).Where(...).ToList();
于 2012-11-21T16:28:47.413 に答える
5

ckalの答えは、最後にincludeを使用することを除いて、かなり近いです。そうでない場合、EFは常にそれを含めるとは限りません(現時点で正確な理由を思い出せません)。

var carList = CarEntities.Where(...).Include(c => c.Photos).ToList();

編集:理由は次のとおりです... Entity Framework Include()が機能していません

于 2012-11-21T16:30:48.847 に答える
1

「新規選択」はあなたがやりたいと思うことです。という新しいクラスを作成し、CarWithPhotosそれを使用して一連の結果を返します。

var carWithPhotos = from car in CarEntities
                    where (...) 
                    select new CarWithPhotos(car, car.Photos.ToList());

私が理解しているように、これは1つのデータベーストリップにコンパイルされます。これがあなたが求めているものだと思います。

編集: クエリしているオブジェクトが大きく、たとえば「車」オブジェクト全体を常に取得したくない場合に、この手法を使用しました。

于 2012-11-21T16:27:13.733 に答える