NHibernate Criteria留下了反连接/子查询混淆

时间:2011-11-09 16:27:38

标签: nhibernate nhibernate-criteria

我将在此之前加上NHibernate远离我的舒适区这一事实,所以这可能比我实现它要简单得多。

我有一个users表和events表映射到userevent个对象。

我的event个对象引用单个user对象。

我有一个属性,我在user对象上持有 LastActivityTimeStamp

我的event对象的属性与 EventType 成功相关。

要确定“在线”用户列表,我需要收集所有用户对象,其中 LastActivityTimeStamp 大于之前计算的cutoff值,其最后一项活动在{ {1}}表不是一个成功的“注销”事件类型。

我该如何写这个标准?

1 个答案:

答案 0 :(得分:1)

尝试调整此

var subquery = DetachedCriteria.For<Event>()
    .Add(Restrictions.Eq("Success", true))
    .Add(Restrictions.EqProperty("User.Id", "u.id"))
    .AddOrder(Order.Desc("TimeStamp"))
    .SetProjection(Projections.Property("EventType"))
    .SetMaxResults(1);

session.CreateCriteria<User>("u")
    .Add(Restrictions.Ge("LastActivityTimeStamp", cutoff))
    .Add(Subqueries.Ne(EventType.LogOff, subquery));