C# 冰激凌冻得很厉害

C# 冰激凌冻得很厉害,c#,fluent-nhibernate,C#,Fluent Nhibernate,根据profiler,完成FluentConfiguration.BuildConfiguration需要24秒。以下是我用于获取配置的代码: MsSqlConfiguration persistenceConfigurer = MsSqlConfiguration .MsSql2005 .ConnectionString(connectionStringBuilder => connectionStringBuilder


根据profiler,完成
FluentConfiguration.BuildConfiguration
需要24秒。以下是我用于获取配置的代码:

    MsSqlConfiguration persistenceConfigurer = MsSqlConfiguration
         .MsSql2005
         .ConnectionString(connectionStringBuilder => connectionStringBuilder
                                                      .Server(server)
                                                      .Database(database)
                                                      .Username(userName)
                                                      .Password(password))
         .ProxyFactoryFactory<ProxyFactoryFactory>()
         .CurrentSessionContext<ThreadStaticSessionContext>()
         .DoNot.ShowSql();

FluentConfiguration cfg = Fluently.Configure()
   .Database(persistenceConfigurer)
   .Mappings(m => m.FluentMappings.AddFromAssemblyOf<ExecutorMap>());

return cfg.BuildConfiguration();
MsSqlConfiguration persistenceConfigurer=MsSqlConfiguration
MsSql2005
.ConnectionString(connectionStringBuilder=>connectionStringBuilder
.Server(服务器)
.数据库(数据库)
.Username(用户名)
.Password(密码))
.ProxyFactoryFactory()
.CurrentSessionContext()
.DoNot.ShowSql();
FluentConfiguration cfg=Fluently.Configure()
.数据库(persistenceConfigurer)
.Mappings(m=>m.FluentMappings.AddFromAssemblyOf());
返回cfg.BuildConfiguration();
地图文件的数量为19。流利的NHibernate工作这么长时间是常见的吗?可能是我的错吗?有什么问题吗?

提前感谢。

如果您使用的是探查器,您应该能够看到
BuildConfiguration
中的哪些调用占用了这段时间。它们是什么


组装扫描是我的猜测。包含映射的程序集是否特别大?您已经告诉Fluent NHibernate扫描程序集以查找映射,因此无论映射有多少,它仍然必须扫描整个程序集以查找映射。

这似乎不是程序集扫描。BuildConfiguration中最耗时的函数是AddDocument(LoadMappingDocument+AddDocumentThroughQueue)。集合不大。它只包含存储库(~35个类)的映射和实现。
AddDocument
是一个NHibernate函数,只有当Fluent NHibernate编译完映射后才会调用它。调用了多少次
AddDocument
?我会期待一次或19次,这取决于你的设置。你是对的。这是一种非纤维功能。它被称为19次。如果其他人对这个问题感兴趣,阅读和讨论可能会有用