CreateSqlQuery на объекте со свойством формулы

Когда я пытаюсь запросить использование таблицы CreateSqlQuery и преобразовать его в объект, содержащий свойство формулы, я добираюсь ниже Adoexception.

"Значение не может быть нулевым. Название параметра: имя поля"

Во-первых действительно ли возможно использовать createsqlquery на объекте, который имеет отображение формулы?

6
задан techrich 21 June 2010 в 12:39
поделиться

1 ответ

Можно использовать 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. Запросы сущностей и следующие пункты.

7
ответ дан 16 December 2019 в 21:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: