2012-05-16 8 views
2

У меня есть один класс под названием Requestparent. У меня есть 3 класса, называемые requesttype1, requesttype2, requesttype3, все 3 наследуются от RequestParent.Entity Framework, получить тип дочерних классов?

В одном из экранов, мне нужно, чтобы сделать запрос, чтобы показать все открытые запросы всех типов в сетке

что-то вроде: Открыли Дату - Тип - открываемое.

Если я запрошу запрос, я не получу тип.

Другим решением было бы сделать 3 разных запроса дочерним объектам.

EF автоматически создал столбец дискриминатора.

ответ

2

Если вы сделаете запрос выбора базовому типу; то при создании операторов присоединения к дочерним таблицам и создания сущностей дочерних типов.

Таким образом, даже если вы делаете запрос к базовой таблице, он создает сущности дочерних типов. Вы можете просто использовать оператор Entity.GetType(), чтобы получить тип объекта.

Например, предположим, что у вас есть базовый объект Base и два производных объекта, называемых Derived1 и Derived2. Затем, если вы запустите следующий оператор select;

List<Base> temp = (from o in context.Base 
      select o).ToList<Base>(); 

У вас будут сущности типа Производные 1 и Производные 2. Простое использование типа достаточно, чтобы определить тип объекта. Например;

if (temp[0].GetType() == typeof(X)) 
    { 
      .... 
    } 
Смежные вопросы