私はNHibernateはでのStructureMapを使用していると私は新しいセッション毎回を構築するためのツールが必要とされている指示したい、と配置されている場合のみ。
私はいくつかのコードで説明しようとします(これはコンソールアプリケーションです)。に指示のStructureMap(配置された場合にのみ)、新しいセッションを作成するための
私はこの方法(ConnDbは私の接続文字列である)私のセッションファクトリを構築する:
For<ISessionFactory>()
.Singleton()
.Use(() => new NHSessionFactory(ConnDb, true).SessionFactory);
、これは私がセッションを構築するために使用するコードですと、期待どおり
For<ISession>()
.Singleton()
.Use(x => x.GetInstance<ISessionFactory>().OpenSession());
すべてが動作します私はセッションを破棄しませんが、このようなことをしたいと思います:
using (session)
{
using (var tx = session.BeginTransaction())
{
// DO SOMETHING
tx.Commit();
}
}
using (session)
{
using (var tx = session.BeginTransaction())
{
// DO SOMETHING
tx.Commit();
}
}
For<ISession>()
.AlwaysUnique()
.Use(x => x.GetInstance<ISessionFactory>().OpenSession());
が、私は今、新しいセッションがアクティブな1があります場合でも、作成されたことに気付きました:私はこのように、セッションのためのコードを変更しようとしました。 私の状況では、サービスロケータでISessionを解決する別のコンポーネント(Rhino.Security)を参照しています。