データベースには 3 つのテーブルがあり、それぞれが edmx にエンティティを持っています。私の問題を説明するために、3 つのテーブルを想像してください。
Table: Make
Fields:
makeID
make
Table: Model
FIelds:
modelID
makeID foreign key
model
Table: Car
carID
modelID foreign key
car
Make、Model、および Car エンティティには、エンティティ モデルのすべてのナビゲーション プロパティがあります。遅延読み込みが無効になっています。Jeep Grand Cherokee であるすべての車をプルして、ページに出力できるようにしたいと考えています。
現在、関数の 1 つにこのようなものがあります (C# 4.0)
IEnumerable<Make> makeList = (((ObjectSet<Lot>)_modelRepository.GetQuery())
.Include(mk => mk.Models.Where(md => md.model == "Grand Cherokee"))
.Where(mk => mk.make == "Jeep").ToList());
_makeRepository.GetQuery()
を返しますIQueryable
... リポジトリ パターンを実装します
このクエリは正常に動作するはずです (この例ではテストしていません) が.Include
、関数が返されるように車のテーブルを作成するにはどうすればよいですか? Make への直接ナビゲーション プロパティはありません)
POCO オブジェクトを使用しています。
目標は、これを行うために Make エンティティを返す 1 つの関数を用意することです。
foreach(Make myMake in makeList)
{
Response.Write(myMake.make);
foreach(Model myModel in myMake.Models)
{
Response.Write(myModel.model);
foreach(Car mycar in myModel.Cars)
{
Response.Write(mycar.car);
}
}
}
このようなことは不可能に思えますが、それが私たちが目指していることです:
IEnumerable<Make> makeList = (((ObjectSet<Lot>)_modelRepository.GetQuery())
.Include(mk => mk.Models.Where(md => md.model == "Grand Cherokee"))
.Include(c => mk.Models.Cars)
.Where(mk => mk.make == "Jeep").ToList());
また、このすべての情報を含む新しいエンティティを edmx に作成して、その 1 つのオブジェクトを照会できるようにしましたが、キーをマップする必要があるというエラーが表示され続けます... [マッピング] タブでそれらをマップしました (ビジュアルStudio 2010)...クエリを機能させるために戻ってきました。