如何释放数据库文件?(NHibernate和嵌入式Firebird数据库)



我们正在使用Nhibernate连接到本地火鸟数据库文件。我们目前将其嵌入,但在某些情况下需要释放它,以便磁盘上的文件可以移动或删除。简单地关闭和处理nhibernate中的sessionfactory是行不通的。该文件仍在使用中。

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

这是可能的还是我们需要启动一个单独的进程?

不需要禁用池。我在我的许多项目中使用NHibernate + FB Embedded。尝试FbConnection.ClearAllPools()在适当的点在你的代码(在你的情况下,它似乎在你已经完成使用会话工厂)。您将需要在您的项目中添加对FB提供程序集的引用。

最新更新