Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate - повторное конфигурирование / 1 сообщений из 1, страница 1 из 1
13.05.2009, 10:02
    #35982261
SergASh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NHibernate - повторное конфигурирование
Привет всем!

Есть настольное приложение, конфигурация NHibernate'а хранится в app.config:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="hibernate-configuration"
             type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
  </configSections>

  <connectionStrings>
    <add name="Main" connectionString="Data Source=.\sqlexpress;Initial Catalog=TEST;Integrated Security=True;"
      providerName="System.Data.SqlClient" />
  </connectionStrings>

  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
      <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
      <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
      <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
      <property name="connection.connection_string_name">Main</property>
      <property name="default_schema">dbo</property>
      <!-- ... -->
    </session-factory>
  </hibernate-configuration>
</configuration>

Приложение задумано так, что пользователь выбирает базу данных, которая заранее не известна, нажимает кнопку, и дальше к этой базе идёт серия запросов. После этого пользователь может выбрать другую базу данных и опять нажать на ту же кнопку. И так пока ему не надоест. Когда нажимают на кнопку, программа производит запись в app.config меняя строку соединения.

Код: plaintext
1.
2.
3.
4.
5.
private void ConnStrMoveCodeToCfg()
{
  Configuration configuration = ConfigurationManager.OpenExeConfiguration( ConfigurationUserLevel.None );
  configuration.ConnectionStrings.ConnectionStrings["Main"].ConnectionString = connectionString_;
  configuration.Save( ConfigurationSaveMode.Full );
}

Пока программа была на датасетах, этот подход прекрасно работал. Но теперь проблема. Хоть при каждом запуске я создаю новую фабрику сеансов и выполняю ее конфигурирование:

Код: plaintext
sessionFactory_ = new Configuration().Configure().BuildSessionFactory();

но все равно запросы идут к той базе, которая была при первом нажатии на кнопку. В первый раз конфигурирование приводит к замтеной задержке, а во второй и последующие разы выполняется моментально. Из чего напрашивается вывод, что new Configuration() на самом деле где-то кеширует конфигурацию.

Вопрос в том, как сбросить этот кеш, чтобы NHibernate увидел обновленную строку соединения.

Спасибо.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate - повторное конфигурирование / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]