1

Nhibernate を使用して、ローカルの firebird データベース ファイルに接続しています。現在は埋め込んでロードしていますが、ディスク上のファイルを移動または削除できるように、場合によってはリリースする必要があります。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

これは可能ですか、それとも別のプロセスを開始する必要がありますか?

4

1 に答える 1

2

プーリングを無効にする必要はありません。私は多くのプロジェクトで NHibernate + FB Embedded を使用しています。コード内の適切なポイントで FbConnection.ClearAllPools() を試してください (あなたの場合、セッション ファクトリの使用が終了した後のようです)。プロジェクトに FB プロバイダー アセンブリへの参照を追加する必要があります。

于 2015-09-01T13:19:53.300 に答える