
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
24.07.2009, 07:21
|
|||
|---|---|---|---|
|
|||
NHibernate: маппинг 2 классов на 1 таблицу |
|||
|
#18+
Здравствуйте! Недавно начал работать с NHibernate и натолкнулся на одну особенность. Допустим, у меня есть таблица: Код: plaintext Два класса (один наследник другого): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. А также mapping: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Таким образом, при выполнении следующего кода: Код: plaintext 1. 2. В базу уходят такие запросы: Код: plaintext 1. 2. 3. 4. Однако я бы хотел добиться такого эффекта, чтобы при загрузке списка BaseClass был лишь один запрос: Код: plaintext 1. 2. 3. Возможно, я не грамотно определил mapping... Поэтому прошу квалифицированной консультации. Кончено, если убрать наследование, то все будет нормально, но нужно, чтобы оно было. Заранее спасибо. P.s. Суть в том, чтобы не загружать лишние данные из базы. Lazy использовать нельзя, т.к. в дальнейшем сущность будет передаваться по сети (WCF). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.07.2009, 13:28
|
|||
|---|---|---|---|
NHibernate: маппинг 2 классов на 1 таблицу |
|||
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.07.2009, 13:39
|
|||
|---|---|---|---|
|
|||
NHibernate: маппинг 2 классов на 1 таблицу |
|||
|
#18+
Нахлобуч Сюда С возможностями Inheritance Mapping NHibernat'а я знаком. Вопрос то в другом. Почему при выборке базового класса он делает два селекта (и соответственно возвращает в 2 раза больше записей)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
26.07.2009, 16:26
|
|||
|---|---|---|---|
NHibernate: маппинг 2 классов на 1 таблицу |
|||
|
#18+
AlexMASНахлобуч Сюда С возможностями Inheritance Mapping NHibernat'а я знаком. Вопрос то в другом. Почему при выборке базового класса он делает два селекта (и соответственно возвращает в 2 раза больше записей)? А что было сохранено - только обьект базового класса? Если нет - то сохранен производный, а сейчас вы хотите его производную часть отбросить (если я правильно понял...)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.07.2009, 07:02
|
|||
|---|---|---|---|
|
|||
NHibernate: маппинг 2 классов на 1 таблицу |
|||
|
#18+
D129, Думаю, вы правильно поняли. Допустим, вышеуказанная таблица содержит следующие записи (сохранен производный класс): Код: plaintext 1. 2. 3. 4. При выполнении: Код: plaintext Код: plaintext А при выполнении: Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.07.2009, 15:00
|
|||
|---|---|---|---|
NHibernate: маппинг 2 классов на 1 таблицу |
|||
|
#18+
AlexMAS, Ну тогда я вижу два пути - сделать кастинг к базовому обьекту для всего списка (сейчас это просто) - и игнорировать "перерасход" памяти (ее сейчас везде много), кроме того - если информация есть, есть вероятность что она понадобится - остается возможность кастинга обратно. то есть, не решать проблему. :) (так как по моему мнению, лишние (ну сколько? 50? 500? байт на обьект - это уже мелочь) - Вот вы пишите "генерируется запрос" - и не такой как вы хотите. Значит, надо его генерировать самостоятельно. Пишите свой ДАЛ. Пусть он возвращает только то, что вы хотите вернуть. То есть - класс дата аксессора, который будет брать из базы только данные базового типа, и возвращать только базовый тип, игнорируя присутствие полей производного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=17&mobile=1&tid=1351731]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
69ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 382ms |

| 0 / 0 |
