查询EntityCollection

时间:2010-08-15 07:58:15

标签: entity-framework-4 entitycollection

我使用默认的EF方式映射我的类,并且我的所有FK都是EntityCollection,因此例如Bike.Wheels将是EntityCollection。

如何使用车轮?

  • 我想检索第1轮和第2轮
  • 我想循环通过Wheels
  • 我想得到全轮.Bolts

我无法使用get / select /[].

我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

嗯,有些操作非常简单 - 其他操作有点麻烦 - 所以你可能想重新设计一些方法来使用简单的方法。

要遍历所有车轮,只需使用foreach声明:

using(BikeEntities ctx = new BikeEntities())
{
   // assuming you just somehow pick a bike to inspect the wheels for
   Bike myBike = ctx.Bikes.FirstOrDefault(b => b.BikeID == 5);

   foreach(Wheel w in myBike.Wheels)
   {
       // do something with your wheel  
       foreach(Bolt b in w.Bolts)
       {
           // do something to al the bolts on your wheel
       }           
   }
}

获取集合的第一个,第二个等等有点棘手,因为你不能使用通常的数组索引。你可以:

  • 使用.Skip()方法 - 但这对于单个对象检索来说有点笨拙
  • 如果集合不是太大,您可以将其“实现”为List<T>,然后使用数组索引

所以你要么使用这样的东西:

Wheel firstWheel = myBike.Wheels.FirstOrDefault();
Wheel secondWheel = myBike.Wheels.Skip(1).FirstOrDefault();

或者您将该集合具体化为一个列表:

List<Wheel> myWheels = myBike.Wheels.ToList();

Wheel firstWheel = myWheels[0];
Wheel secondWheel = myWheels[1];