集成测试与nHibernate-构建配置和;BuildSessionFactory太慢了

集成测试与nHibernate-构建配置和;BuildSessionFactory太慢了,nhibernate,fluent-nhibernate,Nhibernate,Fluent Nhibernate,我正在使用Fluent从程序集添加映射。这需要将近5秒的时间。然后,获取会话工厂还需要1.5分钟。是否需要从这个家伙那里获得一次编译后的输出,并将其序列化到磁盘: Fluently.Configure(config) .Mappings(cfg => { cfg.FluentMappings.AddFromAssemblyOf<Entity>()

我正在使用Fluent从程序集添加映射。这需要将近5秒的时间。然后,获取会话工厂还需要1.5分钟。是否需要从这个家伙那里获得一次编译后的输出,并将其序列化到磁盘:

Fluently.Configure(config)
                .Mappings(cfg =>
                {
                    cfg.FluentMappings.AddFromAssemblyOf<Entity>()
                        .Conventions.Add(ForeignKey.EndsWith("Id"));
                })
                .BuildConfiguration();
fluent.Configure(配置)
.Mappings(cfg=>
{
cfg.FluentMappings.AddFromAssemblyOf()
.Conventions.Add(ForeignKey.EndsWith(“Id”));
})
.BuildConfiguration();

我们有大约15种型号。有没有更快的方法?我不介意必须手动管理一些缓存输出。对每个测试类进行6秒以上的惩罚是相当残酷的。

序列化配置以供重用是可行的:


我只需从磁盘加载.hbm.xml文件,而不是从程序集中提取文件,就可以节省大约一秒钟的时间。我还没有接近我的.1秒目标…谢谢Jay。这帮了大忙。我想在构建会话工厂时没有任何提示?这是现在更大的痛点。奇怪的是,当我切换到序列化时,构建会话工厂所需的时间增加了大约四分之一秒。您是否在每个测试中初始化一个新的会话工厂?如果是这样,那么会话工厂是线程安全的,所以您应该能够在测试中共享它。我有一个会话工厂的静态实例,可以跨不同线程使用。