![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| arial |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 772 Регистрация: 11.3.2003 Где: Архангельская обл . Репутация: нет Всего: 7 |
Привет! Научите, пожалуйста, как правильно.
Имеется класс SomeClass. В классе SomeClass имеется свойство SomeProperty, которое расчитывается на основании свойства Childrens. К примеру, в SomeProperty, мне нужно посчитать количество Childrens, обладающих неким свойством. Хотелось бы избежать прописывания в маппинге <property ... formula="SELECT ..." />. Вопросы: 1. Нужно ли в маппинге прописывать свойство SomeProperty и как-то указывать, что оно не берётся из таблицы, а является расчётным? 2. Как правильнее получать значение SomeProperty: пробежаться циклом по свойству Childrens или использовать CreateCriteria? Как грамотнее? Маппинг:
Класс:
-------------------- Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская) |
||||
|
|||||
| Veitmen |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 10.11.2006 Где: СПБ Репутация: 3 Всего: 4 |
Два вопроса.
1. Я так понял что подсчитывать придется по разным полям иногда? Я бы посоветовал пользоваться фильтрами или создавать IQuery и оттуда смотреть количество полей. Можешь конечно взять просто все и пробежать циклом и может быть ты тогда посчитаешь сразу элементы по разным полям. Смотри как лучше. Сделаешь проперти и считать по разным полям не сможешь. 2. Большая БД? Мой совет сделать функцию универсальную подсчета, которой передаешь имя поля. Внутри создаешь или фильтр или IQuery и возвращаешь количество. А в самом проперти класса уже прописываешь вызов этой функции с нужным параметром. А маппинг и правда не трогай. Это сообщение отредактировал(а) Veitmen - 1.11.2007, 08:21 |
|||
|
||||
| arial |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 772 Регистрация: 11.3.2003 Где: Архангельская обл . Репутация: нет Всего: 7 |
У ребёнка есть свойства. Родитель будет высчитывать некоторые данные по этим свойствам. Например одно из свойств родителя будет считать общее количество детей, второе свойство родителя будет считать сумму некоторых свойств детей, если дети отвечают некоторым условиям и т.д. в таком духе.Таблица мизерная. Десяток таблиц, в самой большой таблице, возможно, со временем, наберётся максимум 100'000 строк.
Добавлено через 2 минуты и 26 секунд
Добавлено через 4 минуты и 56 секунд
-------------------- Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская) |
||||
|
|||||
| Veitmen |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 10.11.2006 Где: СПБ Репутация: 3 Всего: 4 |
Кажется нашел ответ на твой вопрос:
|
|||
|
||||
| arial |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 772 Регистрация: 11.3.2003 Где: Архангельская обл . Репутация: нет Всего: 7 |
-------------------- Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская) |
|||
|
||||
| Veitmen |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 10.11.2006 Где: СПБ Репутация: 3 Всего: 4 |
Чего то я не пойму в чем проблемма... Если тебе надо на уровне БД подсчитывать тогда правь маппинг. Если программно, тогда не прописывай эти поля в маппинге. Вот и все.
Это сообщение отредактировал(а) Veitmen - 1.11.2007, 09:43 |
|||
|
||||
| arial |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 772 Регистрация: 11.3.2003 Где: Архангельская обл . Репутация: нет Всего: 7 |
1. Мне надо посчитать хоть программно (циклом по детям) хоть на уровне БД (createCriteria или createFilter или что там ещё можно придумать), главное, чтобы быстро. Вот я и спрашиваю, как лучше, быстрее, безграбельнее. Не хочу в маппинге запросом выбирать, потому как запрос там на SQL, а диалект на разных базах может отличаться, что может аукнуться при желании в будующем сменить базу данных. 2. Если свойство класса не берётся из базы, то мы просто в маппинге его не описываем и всё. Я правильно понимаю? -------------------- Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская) |
|||
|
||||
| Veitmen |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 10.11.2006 Где: СПБ Репутация: 3 Всего: 4 |
1. От ситуации зависит. ИМХО в данном случае мне кажется програмно будет удобнее... 2. Маппинг хиберу нужен для того что бы выборки из БД сопоставить свойства твоего класса. То есть если свойство в БД отсутсвует, то мы его не пишем в маппинге. |
|||
|
||||
| arial |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 772 Регистрация: 11.3.2003 Где: Архангельская обл . Репутация: нет Всего: 7 |
ОК! Спасибо.
-------------------- Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская) |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |