| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > NHibernate. Расчётное свойство. |
| Автор: arial 31.10.2007, 12:39 | ||||
| Привет! Научите, пожалуйста, как правильно. Имеется класс SomeClass. В классе SomeClass имеется свойство SomeProperty, которое расчитывается на основании свойства Childrens. К примеру, в SomeProperty, мне нужно посчитать количество Childrens, обладающих неким свойством. Хотелось бы избежать прописывания в маппинге <property ... formula="SELECT ..." />. Вопросы: 1. Нужно ли в маппинге прописывать свойство SomeProperty и как-то указывать, что оно не берётся из таблицы, а является расчётным? 2. Как правильнее получать значение SomeProperty: пробежаться циклом по свойству Childrens или использовать CreateCriteria? Как грамотнее? Маппинг:
Класс:
|
| Автор: Veitmen 1.11.2007, 08:19 |
| Два вопроса. 1. Я так понял что подсчитывать придется по разным полям иногда? Я бы посоветовал пользоваться фильтрами или создавать IQuery и оттуда смотреть количество полей. Можешь конечно взять просто все и пробежать циклом и может быть ты тогда посчитаешь сразу элементы по разным полям. Смотри как лучше. Сделаешь проперти и считать по разным полям не сможешь. 2. Большая БД? Мой совет сделать функцию универсальную подсчета, которой передаешь имя поля. Внутри создаешь или фильтр или IQuery и возвращаешь количество. А в самом проперти класса уже прописываешь вызов этой функции с нужным параметром. А маппинг и правда не трогай. |
| Автор: Veitmen 1.11.2007, 09:27 | ||
Кажется нашел ответ на твой вопрос:
|
| Автор: arial 1.11.2007, 09:29 | ||
|
| Автор: Veitmen 1.11.2007, 09:38 |
| Чего то я не пойму в чем проблемма... Если тебе надо на уровне БД подсчитывать тогда правь маппинг. Если программно, тогда не прописывай эти поля в маппинге. Вот и все. |
| Автор: arial 1.11.2007, 09:54 | ||
2. Если свойство класса не берётся из базы, то мы просто в маппинге его не описываем и всё. Я правильно понимаю? |
| Автор: Veitmen 1.11.2007, 10:05 | ||
1. От ситуации зависит. ИМХО в данном случае мне кажется програмно будет удобнее... 2. Маппинг хиберу нужен для того что бы выборки из БД сопоставить свойства твоего класса. То есть если свойство в БД отсутсвует, то мы его не пишем в маппинге. |
| Автор: arial 1.11.2007, 10:21 |
| ОК! Спасибо. |