小编Jen*_*nsJ的帖子

nhibernate水合性能

上下文:具有版本标签文档的域模型.

使用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在我的情况下没有多大帮助.

更新:这是分析器的截图.

dotTrace

更新2:检查查询时间,总共大约100毫秒.

nhibernate performance

6
推荐指数
1
解决办法
563
查看次数

当使用WebRole.cs在“OnStart()”中运行自定义代码时,推荐的调用base.OnStart()的方法是什么?

使用 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但我的代码从未被调用的行为。

c# azure azure-web-roles

2
推荐指数
1
解决办法
784
查看次数

标签 统计

azure ×1

azure-web-roles ×1

c# ×1

nhibernate ×1

performance ×1