|
|
|
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, 07:21 |
|
||
|
NHibernate: маппинг 2 классов на 1 таблицу
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2009, 13:28 |
|
||
|
NHibernate: маппинг 2 классов на 1 таблицу
|
|||
|---|---|---|---|
|
#18+
Нахлобуч Сюда С возможностями Inheritance Mapping NHibernat'а я знаком. Вопрос то в другом. Почему при выборке базового класса он делает два селекта (и соответственно возвращает в 2 раза больше записей)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2009, 13:39 |
|
||
|
NHibernate: маппинг 2 классов на 1 таблицу
|
|||
|---|---|---|---|
|
#18+
AlexMASНахлобуч Сюда С возможностями Inheritance Mapping NHibernat'а я знаком. Вопрос то в другом. Почему при выборке базового класса он делает два селекта (и соответственно возвращает в 2 раза больше записей)? А что было сохранено - только обьект базового класса? Если нет - то сохранен производный, а сейчас вы хотите его производную часть отбросить (если я правильно понял...)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2009, 16:26 |
|
||
|
NHibernate: маппинг 2 классов на 1 таблицу
|
|||
|---|---|---|---|
|
#18+
D129, Думаю, вы правильно поняли. Допустим, вышеуказанная таблица содержит следующие записи (сохранен производный класс): Код: plaintext 1. 2. 3. 4. При выполнении: Код: plaintext Код: plaintext А при выполнении: Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2009, 07:02 |
|
||
|
NHibernate: маппинг 2 классов на 1 таблицу
|
|||
|---|---|---|---|
|
#18+
AlexMAS, Ну тогда я вижу два пути - сделать кастинг к базовому обьекту для всего списка (сейчас это просто) - и игнорировать "перерасход" памяти (ее сейчас везде много), кроме того - если информация есть, есть вероятность что она понадобится - остается возможность кастинга обратно. то есть, не решать проблему. :) (так как по моему мнению, лишние (ну сколько? 50? 500? байт на обьект - это уже мелочь) - Вот вы пишите "генерируется запрос" - и не такой как вы хотите. Значит, надо его генерировать самостоятельно. Пишите свой ДАЛ. Пусть он возвращает только то, что вы хотите вернуть. То есть - класс дата аксессора, который будет брать из базы только данные базового типа, и возвращать только базовый тип, игнорируя присутствие полей производного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2009, 15:00 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=36107648&tid=1351731]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 355ms |

| 0 / 0 |
