ID свойства для сгенерированных данных - NHibernate - PullRequest
1 голос
/ 15 февраля 2011

У меня есть некоторые хранимые процедуры, которые я использую для создания отчетов (каждый SP группирует данные по дням / неделям / месяцам / годам). В качестве примера я создал простую сущность «Отчет», которая соответствует полям из SP, но выдается сообщение о том, что требуется идентификатор (или составной идентификатор).

Как определить идентификатор для созданного набора данных, который не сопоставляется с реальной таблицей?

Файл сопоставления, который у меня есть:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
    <class name="Report, Business" mutable="false" check="none">
        <property name="Year" type="int" />
        <property name="Week" type="int" />
        <property name="Date" type="DateTime" />
        <property name="Count" type="int" />
    </class>
    <sql-query name="spReport">
        <return class="Report, Business" lock-mode="read">
            <return-property column="Year" name="Year" />
            <return-property column="Week" name="Week" />
            <return-property column="Date" name="Date" />
            <return-property column="Count" name="Count" />
        </return>
        exec spReport :StartDate, :EndDate
    </sql-query>    
</hibernate-mapping>

Любая помощь очень ценится.

Спасибо.

1 Ответ

2 голосов
/ 15 февраля 2011
<class name="Report, Business" mutable="false" check="none">
  <composite-id>
    <key-property name="Year" type="int" />
    <key-property name="Week" type="int" />
    <key-property name="Date" type="DateTime" />
    <key-property name="Count" type="int" />
  </composite-id>
</class>

Вам придется переопределить Equals и GetHashCode в Report.

Лично мне этот подход не нравится.Лучше вообще не отображать класс и использовать SetTransformer(Transformers.AliasToBean<Report>()) в запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...