NHibernate: Как перенастроить сопоставления во время выполнения? - PullRequest
5 голосов
/ 26 марта 2010

Давайте сначала разберемся с этим: я знаю, что SessionFactory неизменен - ​​я пытаюсь изменить конфигурацию во время выполнения и восстановить ISessionFactory.

В частности, у меня есть сопоставленный Customer, в который будут добавлены некоторые поля к его узлу динамического компонента во время выполнения. Я хотел бы сделать что-то вроде этого

var newSessionFactory = previousConfiguration
  .RemoveClassMapping(typeof(Customer))
  .AddXmlString(newMappingForCustomer)
  .BuildSessionFactory();

Однако я не вижу очевидного способа удаления сопоставления. Могу ли я что-нибудь сделать, кроме как восстановить всю конфигурацию?

1 Ответ

1 голос
/ 27 марта 2010

Это невозможно. Вам придется регенерировать Configuration.

Мое первоначальное предложение - выбрать другую стратегию для вашей модели.

Однако, если вы полны решимости пойти на это :-), вы можете:

  • Создать «частичное» Configuration (не включая Customer)
  • Сериализуйте его в MemoryStream
  • При необходимости добавьте отображение "base" Customer
  • Создать временную SessionFactory
  • Получите любую информацию, необходимую для отображения Customer
  • десериализовать ваши сохраненные Configuration
  • Добавьте отображение Customer и создайте свой окончательный SessionFactory
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...