2012-07-12 3 views
2

У меня есть карта наследования, такая как Animal and Cat. Оба класса имеют свою собственную таблицу (отображаемую как объединенный подкласс). Теперь я пытаюсь, чтобы NHibernate сохранял только объект Animal, когда я поставляю объект Cat для сохранения (или сохранения) метода NHibernate.сохраняют только базовый класс с NHibernate

От чтения документации я предположил, что session.Save("Animal", catObject) должен делать то, что я хочу, но он ведет себя точно так же, как session.Save(catObject).

Однако создание нового объекта Animal и копирование значений из объекта Cat работает, но это будет пустой тратой времени и памяти.

Есть ли какая-либо другая возможность достичь того, чего я хочу?

+2

Это плохо пахнет как дизайн. Но я думаю, что вы преждевременно оптимизируете: создание Animal from Cat незначительно как во времени, так и в памяти по сравнению с накладными расходами от использования NHibernate. –

ответ

2

Вы не можете этого сделать, и если вам нужно, то у вас возникнет проблема с дизайном. Если вам нужно сохранить Animal, то вы должны работать с Animal, например, не Cat или любой другой тип экземпляра

Кроме того, как говорит @PaulPhillips стоимость/производительность памяти создания одного объекта в сусле случаев пренебрежимо

+0

Спасибо за разъяснение. Это явно проблема дизайна, но, как правило, код существует, неизменный (из-за высоких затрат), и вам приходится работать с ним. –

+0

Я понимаю, что в любом случае, если вы можете создать экземпляр Animal и скопировать ему значения Cat, как вы говорите в своем вопросе, это решит вашу проблему, и это не пустая трата времени и памяти, это совершенно незначительно. – jorgehmv

Смежные вопросы