Сделать проекцию на значение дискриминатора
У меня есть это отображение NHibernate
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="ParentClass" table="myclass" abstract="true" >
...
<discriminator column="mytype" type="string" />
...
<subclass name="SubClass1" discriminator-value="Type1" />
<subclass name="SubClass2" discriminator-value="Type2" />
</class>
</hibernate-mapping>
Итак, как я могу получить проекцию значения дискриминатора, как и любое свойство в моем DAO, когда я фильтрую объекты ParentClass? Код в DAO:
...
using (ISession session = NHibernateSession)
{
ICriteria criteria = session.CreateCriteria<ParentClass>("p")
...
criteria.SetProjection(Projections.ProjectionList()
.Projections.Property("p.Property1")
.Projections.??? // something to get discriminator-value from myclass.mytype column
...
}
...
1 ответ
Решение
Это должно быть так "p.class"
:
criteria.SetProjection(Projections.ProjectionList()
.Add(Projections.Property("p.Property1"))
.Add(Projections.Property("p.class"))
);
17.1.4.1. Псевдоним и ссылки на свойства
Description Syntax Example
...
Discriminator of an entity {[aliasname].class} DISC as {item.class}
....