Как освободить файл базы данных? (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 в вашем проекте.