Как в NHibernate загрузить список наследников определенных типов? - CodeHelper

Как в NHibernate загрузить список наследников определенных типов?

1

Допустим, есть такая иерархия — базовый класс (BaseClass) и его наследники: ClassA, ClassB, ClassC. Задача состоит в том, чтобы загрузить при помощи NHibernate список объектов базового класса BaseClass так, чтобы в этот список попали только экземпляры классов ClassB и ClassC, но не попали экземпляры ClassA. Как это лучше сделать?

Вся иерархия хранится в одной таблице с discriminator-полем.

Лучший ответ:

1

Нужно использовать специальное свойство class, которое хранит тип загружаемой сущности. Это свойство можно использовать в HQL или Criteria API:

var list = session
    .CreateCriteria(typeof(BaseClass))
    .Add(Restrictions.Disjunction()
        .Add(Restrictions.Eq("class", typeof(ClassB)))
        .Add(Restrictions.Eq("class", typeof(ClassC))))
    .List<BaseClass>();

Новые ответы

Новые Лучшие

0

Обучение в Институте Юрия Мороза - очень хорошая проверка, чего ты стоишь. Он учит ценить время, показывает, как мы его бездарно сливаем. Оно того стоит. Не сомневайтесь!

Институт Юрия Мороза не только учит бизнесу, но и помогает улучшать и другие стороны своей жизни.


v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.