1

我会以 NHibernate 远远超出我的舒适区这一事实作为开头,所以这可能比我想象的要简单得多。

我有一个users表和一个events映射到user对象event的表。

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

我有一个属性,我坚持我的user对象为LastActivityTimeStamp

我的event对象上有与EventTypeSuccess相关的属性。

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

我将如何写这个标准?

4

1 回答 1

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));
于 2011-11-10T08:49:57.470 回答