我使用StructureMap與NHibernate的,我想指示建立一個新的會話每次是必要的,且僅當配置工具。
我會嘗試解釋一些代碼(這是一個控制檯應用程序)。指示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());
,但我注意到,現在一個新的會話創建即使有一個活動。 在我的情況下,我引用了另一個組件(Rhino.Security),它使用服務定位器解析了ISession。