Как освободить файл базы данных? (NHibernate и встроенная база данных Firebird)

Мы используем Nhibernate для подключения к локальному файлу базы данных Firebird. В настоящее время мы загружаем его встроенным, но в некоторых случаях необходимо освободить его, чтобы файл на диске можно было перемещать или удалять. Простое закрытие и удаление сессионной фабрики в nhibernate не работает. Файл все еще используется.

using (ISessionFactory sessionFactory = configuration.BuildSessionFactory())
{
    using (ISession session = sessionFactory.OpenSession())
    {
        using (System.Data.IDbCommand command = session.Connection.CreateCommand())
        {
            // commands removed
        }
    }

    sessionFactory.Close();
}

// file is still "in use" here

Это возможно сделать или нам нужно начать отдельный процесс?

1 ответ

Решение

Нет необходимости отключать пул. Я использую NHibernate + FB Embedded во многих моих проектах. Попробуйте FbConnection.ClearAllPools() в подходящей точке вашего кода (в вашем случае это кажется после того, как вы закончили использовать фабрику сеансов). Вам нужно будет добавить ссылку на сборку провайдера FB в вашем проекте.

Другие вопросы по тегам