我试图在我的NHibernate会话中使用范围生活方式(我使用流利的)我是一个Windows Azure角色。
初始化会话工厂时,我得到以下异常:
键入' Castle.MicroKernel.Lifestyle.Scoped.CallContextLifetimeScope'在汇编' Castle.Windsor,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 407dd0808d44fbdc'未标记为可序列化。
会议注册:
container.Register(Component.For<ISession>()
.UsingFactoryMethod(k => k.Resolve<ISessionFactory>().OpenSession())
.LifestyleScoped()
);
实现:
using (this.windsorContainer.BeginScope())
{
var job = this.windsorContainer.Resolve<TJob>();
try
{
job.Run();
}
finally
{
this.windsorContainer.Release(job);
}
}
这里使用范围的原因是避免在线程不工作时打开会话。我当然可以分离一个新的线程并处理每个线程的会话,但它似乎更像是一个黑客而不是一个解决方案)