2014-03-31 95 views
0

我今天遇到了NHibernate的一个奇怪问题。我很确定这有一个解释和解决方案。所以在这里,我们去:我已经分离的问题,一个查询和代码如下:NHibernate QueryOver使用相同的查询查询数据库三次

_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

我会首先看到的是被查询的数据库本身就支持这一行动。要找出数据库actualy做之一: -

  1. 运行SQL事件探查和轮廓查询
  2. 下载的NHProfiler试用版,并检查上。如果您发现它有助于解决未来问题,这是一款非常棒的工具,非常值得购买。

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

+0

大声笑,我没有想到这种可能性:-)事实上,原来是多次写入日志。谢谢! –

+0

很高兴帮助... – Rippo