Возможно ли иметь следующие условия:
- Кэширование L2 включено в NHibernate
- Несколько классов отображаются в одной таблице
- Редактирование одного класса обновляет информацию в другом классе в кэше NHibernate L2.
В моем приложении для некоторых из моих больших объектов у меня есть «маленькие» классы с парой свойств для передачи данных, а затем «большие» версии для редактирования. Таким образом, я могу быстро загрузить список элементов, из которых пользователь может выбирать, а затем загрузить только остальные свойства, если пользователь хочет редактировать этот объект.
Я обнаружил, что если я отредактирую «большую» сущность, а затем попытаюсь извлечь «маленькую» сущность, информация о малой сущности не обновляется новой информацией (конечно, эта информация является общей для обоих классы). Я широко использую кэш L2, поэтому я предполагаю, что NHibernate не в состоянии отобразить изменения от большого объекта к маленькому объекту? Если это так, могу ли я отказаться от поддержки кеширования от небольших организаций? Я полагаю, что я мог бы также загрузить и сохранить маленькую версию одновременно с сохранением большой версии, хотя это кажется хаком (и на самом деле это больше, чем этот простой пример, поэтому я бы не стал этого делать) .
Действительно простая иллюстрация рассматриваемого домена:
/* EntityDto is just a base class with an Id */
public class SimpleAdDto : EntityDto<SimpleAdDto>
{
public virtual string Name { get; set; }
/* more properties */
}
public class FullAdDto : EntityDto<FullAdDto>
{
public virtual string Name { get; set; }
/* lots more properties */
}
Оба класса отображаются на одну и ту же базовую таблицу; FullAdDto просто имеет больше свойств. Если я изменяю имя FullAdDto, обновленное имя не отражается в SimpleAdDto в кэше.
Я вообще не экспериментировал с наследованием, решит ли это мою проблему, если у меня как-то будет FullAdD, чтобы быть подклассом SimpleAdDto?
Заранее спасибо!