Nhibernate 具有多线程的sessionfactory

Nhibernate 具有多线程的sessionfactory,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,是否可以在一个服务器上创建一些类的小型会话工厂 线程,然后在第二个线程上创建完整会话工厂 我想加快sessionfactory的初始化速度 你能示范一下怎么做吗 加速启动的一种方法是序列化配置对象,这会占用大部分启动时间来构建和验证 实现aproach的代码: var minisessionfactory = Fluently.Configure() .DataBase(SomeConfiguration.Standard....) // only add the relevan

是否可以在一个服务器上创建一些类的小型会话工厂 线程,然后在第二个线程上创建完整会话工厂

我想加快sessionfactory的初始化速度

你能示范一下怎么做吗


加速启动的一种方法是序列化配置对象,这会占用大部分启动时间来构建和验证

实现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;
    }
}