|
NHibernate mapping Sum() + Fluent
|
|||
---|---|---|---|
#18+
В NHibernate есть возможность на сущность мапить поле из другой таблицы . Мне нужно почти то же самое, только мапить сумму по полям из другой таблицы. Все банально: Есть Order, есть Items.Amount нужно посчитать Order.Amount = Sum(Items.Amount) where Order.Id = Items.OrderId Хочу сделать это не запросами/критериям, а в мапинге, что бы всегда когда выбирается Order, для него считалась сумма, в гугле не нагуглил, подскажите плз есть ли возможность такое делать в мапинге NHibernate, а еще лучше в Fluent? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2011, 12:58 |
|
NHibernate mapping Sum() + Fluent
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2011, 15:59 |
|
NHibernate mapping Sum() + Fluent
|
|||
---|---|---|---|
#18+
спасибо :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2011, 16:24 |
|
NHibernate mapping Sum() + Fluent
|
|||
---|---|---|---|
#18+
Var79, Но вообще говоря мне не нравится такой способ. Имхо, эффективней было бы сделать примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
и маппинг для TotalAmount: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2011, 16:45 |
|
NHibernate mapping Sum() + Fluent
|
|||
---|---|---|---|
#18+
насколько я вижу тут не будет считаться сумма TotalAmount если прочитать существующий Order или я ошибаюсь? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2011, 16:51 |
|
NHibernate mapping Sum() + Fluent
|
|||
---|---|---|---|
#18+
Будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2011, 16:52 |
|
NHibernate mapping Sum() + Fluent
|
|||
---|---|---|---|
#18+
SolYUtorБудет. то есть я сделаюorderRepository.get ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2011, 17:04 |
|
NHibernate mapping Sum() + Fluent
|
|||
---|---|---|---|
#18+
SolYUtorБудет. то есть сделаю Код: plaintext 1.
хм а как это работает? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2011, 17:07 |
|
NHibernate mapping Sum() + Fluent
|
|||
---|---|---|---|
#18+
я не вижу запроса к БД c Sum() ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2011, 17:08 |
|
NHibernate mapping Sum() + Fluent
|
|||
---|---|---|---|
#18+
Var79, Var79то есть сделаю Код: plaintext
Если делаете шаблон Repository поверх сессии NHibernate - то выкиньте его нафиг. Рано или поздно вам будут нужны всё новые возможности NHibernate, и в итоге он либо будет дублировать интерфейс сессии, либо сильно ограничивать возможности. Var79 Код: plaintext
хм а как это работает? Вы код читали? Var79я не вижу запроса к БД c Sum() Он и не нужен! Мы немного денормализовали данные в угоду производительности. NHibernate отображает вашу объектную на реляционную. В приведённом мною коде поле _totalAmount поддерживается в правильном состоянии при удалении/добавление строк заказа. Замаплено оно на доступ непосредственно к полю _totalAmount, и это поле будет сохранено в БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2011, 17:23 |
|
NHibernate mapping Sum() + Fluent
|
|||
---|---|---|---|
#18+
SolYUtorМы немного денормализовали данные в угоду производительности. Замаплено оно на доступ непосредственно к полю _totalAmount, и это поле будет сохранено в БД. теперь понял, спасибо :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2011, 18:03 |
|
NHibernate mapping Sum() + Fluent
|
|||
---|---|---|---|
#18+
SolYUtor Код: plaintext
access="field.camelcase-underscore" а это для чего? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.07.2011, 18:07 |
|
|
start [/forum/topic.php?fid=17&msg=37339912&tid=1350703]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 151ms |
0 / 0 |