Sql NHibernate QueryOver使用同一查询查询数据库三次

Sql NHibernate QueryOver使用同一查询查询数据库三次,sql,nhibernate,fluent-nhibernate,nhibernate-mapping,Sql,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,我今天遇到了一个奇怪的问题。我很确定这有一个解释和解决办法。现在我们开始:我已将一个查询与问题隔离开来,代码如下所示: _session = _sessionFactory.OpenSession(); ITransaction _transaction = _session.BeginTransaction(); var result = _session.QueryOver<Employee>() .Where(x => x.uid == employeeuid)

我今天遇到了一个奇怪的问题。我很确定这有一个解释和解决办法。现在我们开始:我已将一个查询与问题隔离开来,代码如下所示:

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

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

_transaction.Commit();
\u session=\u sessionFactory.OpenSession();
ITransaction_transaction=_session.BeginTransaction();
var result=\u session.QueryOver()
.其中(x=>x.uid==employeeuid)
.SingleOrDefault();
_Commit();
Employee对象有一些引用等,但我认为现在这并不重要。UID是一个字符串。基本上,log4net告诉我同一个查询执行了三次:

SELECT <some columns...> FROM employer this_ WHERE this_.uid = <uid-string>
从雇主中选择此项,其中此.uid=
正如你所看到的。。。一个简单的问题。有人能给我一个如何消除查询开销的提示吗

问候,,
Martin

首先,我要通过查看数据库本身上正在查询的内容来支持这一点。要了解数据库实际执行的操作,请执行以下操作之一:-

  • 运行SQL分析器并分析查询
  • 下载的试用版并检查。这是一个很好的工具,如果您发现它对未来的问题有帮助,那么购买它是值得的

  • 就我个人而言,我对log4Net输出的大量日志信息有点怀疑。

    Lol,我没有想到这种可能性:-)事实上,日志被多次写入。谢谢