Я использую Fluent NHibernate и должен работать с заархивированными данными прямо сейчас, где та же таблица существует в нескольких базах данных MSSQL. В зависимости от предоставленного пользователем значения даты мне нужно подключиться к другой базе данных, тогда как все данные сопоставления остаются неизменными.Переключение базы данных для одной и той же отображаемой таблицы
Конкретно: если предоставленное значение даты находится в текущем году, используйте DB CUR
, в противном случае используйте годовой БД (2011, 2010, 2009, ...).
Теперь было время, когда люди говорили мне, что повторное создание SessionFactory снова и снова является довольно дорогостоящим делом, поэтому я подумал про себя, что должен существовать способ использования существующего sessionFactory, Update my ClassMap (что-то вроде изменения схемы от «CUR.DBO» до «2011.DBO») и снова подключаться.
Я пытался возиться с обеими FluentConfiguration и SessionFactory, но тогда я взял стрелу в колене не мог найти способ, чтобы обновить отображения во время выполнения.
Смогу ли я создать новый SessionFactory? Или кто-нибудь там знает жизнеспособную процедуру для повторной инициализации (Fluent) сопоставлений NHibernate во время выполнения?
EDIT: Одна очень важная деталь, SqlConnection также предоставляется снаружи. Он обеспечивает доступ ко всем базам данных, а это значит, что теоретически мне никогда не придется создавать Connections. Итак, в основном, мне нужно создать SessionFactory для каждого архива, чтобы обновить информацию схемы Mapping, указывая на другую базу данных. Но это именно то место, где я застрял.
Почему бы не создать 2 сеансовых фабрики? Один для базы данных архива и один для производственной базы данных. –
У нас есть один архив в год, поэтому я, по крайней мере, создаю примерно 10.Это в основном то, что, насколько мне известно, мне придется делать, но, надеюсь, есть более умный способ ... –