0
我使用的是nHibernate,它工作正常。
但是我开始用miniprofiler分析它,发现其中有很多重复的请求。nHibernate在分析时查询重复查询结果(select top 1)
例如该日志消息:
select TOP (1) user0_.Id as Id26_
, user0_.Username as Username26_
, user0_.Password as Password26_
, user0_.IsSystemAdmin as IsSystem4_26_
, user0_.LastLogin as LastLogin26_
, user0_.Name as Name26_
, user0_.Email as Email26_
, user0_.PhoneNumber as PhoneNum8_26_
from [User] user0_
where user0_.Username = @p0
(的ExecuteReader的getResultSet DoQuery DoQueryAndInitializeNonLazyCollections DoList ListIgnoreQueryCache 列表列表列表PerformList)
但查询其实是不顶1查询。 表中的每一行都有这些请求中的一个,但它应该在数据库查询中进行评估!
_userRepository.FindAllQuery(x => x.Username == username).FirstOrDefault();
public IQueryable<TEntity> FindAllQuery(Expression<Func<TEntity, bool>> expression)
{
return Session.Query<TEntity>().Where(expression);
}
这可能是相关型号,但我不知道:
http://charlass.wordpress.com/2012/03/11/nhibernate-firstordefault-and-fetch-not-what-i-expect/
对此有何玄机?