Проецирование агрегатов вместе с Entity с использованием NHibernate - PullRequest
0 голосов
/ 18 мая 2009

У меня есть довольно стандартная таблица Orders и связанная таблица OrderRows, скажем:

Orders
[id] INTEGER
[name] ...

OrderRows
[orderId] INTEGER
[quantity] INTEGER
[unitPrice] SMALLMONEY
[description] VARCHAR(...)

В некоторых ситуациях я хотел бы получить список заказов вместе со сводкой итогов, большую часть времени меня не волнует сводка.

Используя Criteria API, я могу создать прогноз [количество] * [unitPrice] для каждого Заказа, но как мне получить и Заказ, и прогноз в одном наборе результатов?

Ответы [ 2 ]

0 голосов
/ 23 ноября 2009

Вы можете рассчитать Всего в сущности и сохранить его в базе данных (если вы не хотите загружать все строки каждый раз).

0 голосов
/ 18 мая 2009

Я считаю, что решение здесь состоит в том, чтобы создать класс DTO и затем использовать его в качестве преобразования.

public class OrderDTO
{
    int Id;
    // Rest of Orders properties you want

    int LineTotal; // [quantity]*[unitPrice]

    public OrderDTO(int id, /* rest of constructor parameters */);
}

session.CreateCriteria(typeof(... /* criteria query here */))
    .SetResultTransformer(new AliasToBeanConstructorResultTransormer(typeof(OrderDTO).GetConstructors()[0]));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...