Когда я пытаюсь запросить использование таблицы CreateSqlQuery и преобразовать его в объект, содержащий свойство формулы, я добираюсь ниже Adoexception.
"Значение не может быть нулевым. Название параметра: имя поля"
Во-первых действительно ли возможно использовать createsqlquery на объекте, который имеет отображение формулы?
Можно использовать CreateSQLQuery
с формулами.
Вот доказательство концепции. Сопоставление (класс нетрудно угадать):
<class name="Foo">
<id name="Id">
<generator class="hilo"/>
</id>
<property name="Data"/>
<property name="DataX2" formula="Data * 2"/>
</class>
И вот запрос:
var foos = session.CreateSQLQuery(
@"
select Id as {foo.Id},
Data as {foo.Data},
Data + Data as {foo.Data2}
from Foo
")
.AddEntity("foo", typeof(Foo))
.List<Foo>();
Если вы присмотритесь, вы увидите, что я использую другую формулу, чем та, которая была объявлена в сопоставлении. NHibernate разрешает все, что угодно, пока все свойства находятся в запросе.
Предлагаю вам прочитать 17.1.2. Запросы сущностей и следующие пункты.