Nhibernate 具有多线程的sessionfactory
是否可以在一个服务器上创建一些类的小型会话工厂 线程,然后在第二个线程上创建完整会话工厂 我想加快sessionfactory的初始化速度 你能示范一下怎么做吗Nhibernate 具有多线程的sessionfactory,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,是否可以在一个服务器上创建一些类的小型会话工厂 线程,然后在第二个线程上创建完整会话工厂 我想加快sessionfactory的初始化速度 你能示范一下怎么做吗 加速启动的一种方法是序列化配置对象,这会占用大部分启动时间来构建和验证 实现aproach的代码: var minisessionfactory = Fluently.Configure() .DataBase(SomeConfiguration.Standard....) // only add the relevan
加速启动的一种方法是序列化配置对象,这会占用大部分启动时间来构建和验证 实现aproach的代码:
var minisessionfactory = Fluently.Configure()
.DataBase(SomeConfiguration.Standard....)
// only add the relevant mappings
.Mapping(m => m.FluentMappings.Add<AMap>().Add<BMap>()...)
.BuildSessionfactory();
ThreadPool.QueueUserWorkItem(state =>
{
RealSessionFactory = Fluently.Configure()
.DataBase(SomeConfiguration.Standard....)
// only add the relevant mappings
.Mapping(m => ...)
.BuildSessionfactory();
SessionFactoryReady = true;
});
// do some Stuff with minisessionfactory
我已经完成了配置的序列化。是否无法再次使用minisessionfactory创建完整的sessionfactory。我认为您正在创建两个单独的sessionfactory。您可以重用配置,但不能重用sessionfactory否。如何检查要使用哪个会话工厂。我的意思是,在某些课程开始时,会使用minisession工厂。应该有一种机制来检查realsessionfactory是否准备好供othershow使用。我可以保持方法调用实际会话工厂等待。您能用代码来显示它吗?我遇到的问题是,我只有一个方法来创建会话工厂。假设我为几个实体创建迷你sessionfactory。因此,最初该方法返回minisession,因为完整会话的创建尚未完成,因为它在单独的线程上运行。我是否需要检查是否存在这样的情况,即减损仅适用于某些实体,而不适用于其他实体。我如何处理这种情况
ISession GetSession()
{
while (!SessionFactoryReady) Thread.Sleep(1000);
return RealSessionFactory.OpenSession();
}
// or
ISessionFactory SessionFactory
{
get
{
while (!SessionFactoryReady) Thread.Sleep(1000);
return RealSessionFactory;
}
}