I've mapped my classes with default EF way, and all my FKs are EntityCollection, so for example Bike.Wheels would be EntityCollection.
How do I work with Wheels?
I could not use get/select/[].
Am I missing something?
Well, some operations are really simple - others are a bit kludgy - so you might want to redesign some of your approaches to use the easy methods.
To loop over all your wheels, just use a foreach
statement:
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
}
}
}
Getting the first, second etc. of a collection is a bit more tricky, since you cannot use the usual array indexing. You can:
.Skip()
method - but that's a bit clumsy for single object retrievalList<T>
and then use array indexingSo either you use something like this:
Wheel firstWheel = myBike.Wheels.FirstOrDefault();
Wheel secondWheel = myBike.Wheels.Skip(1).FirstOrDefault();
or you materialize the collection into a list:
List<Wheel> myWheels = myBike.Wheels.ToList();
Wheel firstWheel = myWheels[0];
Wheel secondWheel = myWheels[1];