создание класса для хранимой процедуры, возвращение данных из нескольких таблиц - PullRequest
0 голосов
/ 07 апреля 2011

У меня есть хранимая процедура, возвращающая данные из нескольких таблиц. в nhibernate создаем класс для каждой таблицы. требуется ли создать класс для каждой возвращаемой таблицы, а затем связать этот класс друг с другом. есть ли другой способ сделать это как создание класса, который содержит все поля, возвращаемые хранимой процедурой

спасибо

Ответы [ 2 ]

2 голосов
/ 07 апреля 2011

Этого довольно легко достичь.В ваших сопоставлениях добавьте: -

<sql-query name="GetItemDTO">
  <![CDATA[exec uspGetSomeResults :id]]>
</sql-query>

Создайте класс: -

public class ItemDTO 
{
  public virtual long Id { get; protected set; }
  public virtual string Name { get; protected set; }
}

и получите результаты

return Session
    .GetNamedQuery("GetItemDTO")
    .SetInt64("id", 123456)
    .SetResultTransformer(new AliasToBeanResultTransformer(typeof(ItemDTO)))
    .List<ItemDTO>();

Предполагается, что SP возвращаетстолбец идентификатора и имени.Они должны идеально соответствовать вашим именам классов.

0 голосов
/ 07 апреля 2011

Я не работал с хранимыми процедурами, но вы определенно можете создать класс, который отображается в представление, а не только в таблицу.

Кстати, если вы используете QueryOver, вы можетеиспользуйте метод Select для возврата пользовательских объектов: http://nhforge.org/blogs/nhibernate/archive/2009/12/17/queryover-in-nh-3-0.aspx#Projections

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