7

Trying to implement a very simple TPH setup for a system I'm making, 1 base, 2 inherited classes.

However the inherited classes all belong to the same entity set, so within my ObjectContext using loop, I can only access the base abstract class. I'm not quite sure how I get the elements which are concrete classes? (I've also converted it to using POCO).

alt text

Then within my application using the Entities:

using (SolEntities sec = new SolEntities()) {
    Planets = sec.CelestialBodies;
}

There's a CelestialBodies entity set on sec, but no Planets/Satellites as I'd expect.

Not quite sure what needs to be done to access them.

Thanks

Psytronic
  • 6,043
  • 5
  • 37
  • 56

2 Answers2

6

You can use the OfType method:

using (SolEntities sec = new SolEntities()) {
    Planets = sec.CelestialBodies.OfType<Planet>();
}
Thomas Levesque
  • 286,951
  • 70
  • 623
  • 758
3

As Thomas Levesque described OfType extension method will allow you querying only single inherited type you really want to access. If you access CelestialBodies directly you will get all entities. Every entity will be of type Planet or Satellite but you will have to cast them to access their properties.

Ladislav Mrnka
  • 360,892
  • 59
  • 660
  • 670