NHibernate QueryOver使用相同的查询三次查询数据库

时间:2014-03-31 10:49:05

标签: sql nhibernate fluent-nhibernate nhibernate-mapping

今天我遇到了NHibernate的一个奇怪问题。我很确定有一个解释和解决方案。所以我们在这里:我已经用问题隔离了一个查询,代码如下:

_session = _sessionFactory.OpenSession();
ITransaction _transaction = _session.BeginTransaction();

var result = _session.QueryOver<Employee>()
   .Where(x => x.uid == employeeuid)
   .SingleOrDefault();

_transaction.Commit();

Employee对象有一些引用等,但我认为这不重要。 UID是一个字符串。基本上发生的是log4net告诉我相同的查询被执行三次:

SELECT <some columns...> FROM employer this_ WHERE this_.uid = <uid-string>

正如你所看到的...一个简单的查询。任何人都可以给我一个如何摆脱查询开销的提示吗?

此致 马丁

1 个答案:

答案 0 :(得分:1)

我首先要看看数据库本身正在查询的内容。要找出数据库实际执行的操作: -

  1. 运行SQL分析器并分析查询
  2. 下载NHProfiler的试用版并检查一下。这是一个很好的工具,如果您发现它有助于解决未来的问题,那么非常值得购买它。
  3. 就个人而言,我对log4Net发布的日志信息量有点怀疑。