Nhibernate问题(为了获得最佳性能)

时间:2011-09-16 10:08:44

标签: asp.net nhibernate fluent-nhibernate

对于商店,我有一个访问次数的表格,如下所示:

   Id     Timestamp    UniqueUser     IsTrans
   1     2011-01-31       5874         True
   2     2011-01-30       1238         True
   3     2011-01-29       8547         True
   4     2011-01-28       5874         False
   5     2011-01-27       1238         True
   6     2011-01-26       1238         True
   7     2011-01-25       5874         False
   8     2011-01-24       1238         True
   9     2011-01-23       1238         True
   10    2011-01-22       5874         True
  ...        ...          ...          ...

此外,我还有交易表,其中包含交易信息。看起来像这样:

   Id     Visit_Id       OrderPrice     
   1         1             100
   2         2             100
   3         3             100
   4         5             100
   5         6             100
   6         8             100
   7         9             100
   8         10            100
  ...        ...           ...         

我想获取导致交易的唯一用户的访问列表以及导致交易的访问(同一个唯一访问者)的访问。例如,对于第一个交易,我想要获取包含这些访问的列表

   Id     Timestamp    UniqueUser     IsTrans
   1     2011-01-31       5874         True
   4     2011-01-28       5874         False
   7     2011-01-25       5874         False

我已经成功完成了这样的2个查询:

   var transList = _session.QueryOver<Transaction>().Left.JoinAlias(x => x.visit, () => visitAlias).Where(() => visiteAlias.UniqueId == trans.visit.UniqueId && visit.Timestamp < trans.trackingCookie.Timestamp).Take(1).ToList();

   var listvisit =
                _session.QueryOver<Visit>().Where(
                    x =>
                    x.Timestamp <= trans.visit.Timestamp &&
                    x.Timestamp > transList[0].visit.Timestamp && x.UniqueId == trans.visit.UniqueId).OrderBy(x=>x.Timestamp).Desc().Future().ToList();

其中 trans 是第一个交易。如您所见,我找到同一用户的最后一笔交易的时间戳,然后我获取列表。

有没有办法只在一个查询中获取此列表?

提前感谢您,并对帖子的篇幅感到抱歉

0 个答案:

没有答案