上下文:具有版本和标签 的文档的域模型.
使用nHibernate进行保湿时,您会期待什么样的数字?
我的域模型不是很复杂,当我查询所有文档获取版本以及标签时,查询从数据库中返回多于8000行 - 这反过来又被水合成约2300个文档.
数据库操作大约需要100ms,水化过程需要4000ms,我觉得很奇怪.
dotTrace表示大量的呼叫(1.6M)
"System.Data.SQLite.SQLite3.ColumnName(SQLiteStatement,Int32)"
等等.
查询是使用Criteria执行的,如下所示:
var docsQuery = _session.CreateCriteria<Document>();
docsQuery.SetFetchMode("Editions", FetchMode.Join);
docsQuery.SetFetchMode("Tags", FetchMode.Join);
docsQuery.SetResultTransformer(new DistinctRootEntityResultTransformer());
return docsQuery .List<Document>();
Run Code Online (Sandbox Code Playgroud)
注意:肯定限制结果集将提高性能.我主要担心的是为什么一般的水合作用表现不好.摆弄session.FlushMode和session.CacheMode在我的情况下没有多大帮助.
更新:这是分析器的截图.

更新2:检查查询时间,总共大约100毫秒.
使用 WebRole.cs配置IIS时,推荐的调用方式是什么base.OnStart()?
public class WebRole : Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint
{
public override bool OnStart()
{
RunMyCode();
return base.OnStart();
}
}
Run Code Online (Sandbox Code Playgroud)
或者
public class WebRole : Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint
{
public override bool OnStart()
{
var result = base.OnStart();
if (result == true) { RunMyCode(); }
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
换句话说,“考虑基类的返回值有意义吗?”。
我(我认为)经历过有时基本函数必须返回false但我的代码从未被调用的行为。