Скажем, у меня есть следующая структура, сопоставленная с дискриминатором (таблица на иерархию):
Entity (abstract, no discriminator)
|
Animal (abstract, no discriminator)
/ \
Dog (1) Cat(2)
Если я запрошу об этом с помощью Linq to NHibernate:
.Where(x => x.Entity is Animal)
Я не получаю результатов. Глядя на сгенерированный запрос, я ожидал увидеть:
where type in (1, 2)
Но вместо этого я получил следующее:
where type='animal'
Animal абстрактен и даже не имеет дискриминатора, поэтому сгенерированный запрос не имеет смысла.
Копнув немного глубже, я обнаружил, что запрос внутренне переведен на нечто похожее на WHERE x.class=animal
в HQL. Это ошибка Linq to NHibernate? Или это ожидаемое поведение?