EF TPH Inheritance Query - PullRequest
       32

EF TPH Inheritance Query

7 голосов
/ 02 января 2011

Попытка реализовать очень простую настройку TPH для системы, которую я делаю, 1 базовый, 2 унаследованных класса.

Однако все унаследованные классы принадлежат одному и тому же набору сущностей, поэтому в моем ObjectContext используется циклЯ могу получить доступ только к базовому абстрактному классу.Я не совсем уверен, как я получаю элементы, которые являются конкретными классами?(Я также преобразовал его в использование POCO).

alt text

Затем в моем приложении с помощью Entities:

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

Есть сущность CelestialBodies, установленная наsec, но нет планет / спутников, как я ожидал.

Не совсем уверен, что нужно сделать, чтобы получить к ним доступ.

Спасибо

Ответы [ 2 ]

5 голосов
/ 02 января 2011

Вы можете использовать метод OfType:

using (SolEntities sec = new SolEntities()) {
    Planets = sec.CelestialBodies.OfType<Planet>();
}
3 голосов
/ 02 января 2011

Как описал Томас Левеск * метод расширения OfType позволит вам запрашивать только один унаследованный тип, к которому вы действительно хотите получить доступ. Если вы откроете CelestialBodies напрямую, вы получите все объекты. Каждая сущность будет иметь тип Planet или Satellite, но вам придется разыграть их, чтобы получить доступ к их свойствам.

...