将NHibernate.Envers修订信息加入审计实体

时间:2015-03-23 13:39:31

标签: c# nhibernate fluent-nhibernate nhibernate-envers

在查询实体时,是否有一种简单的方法可以加入实体的最新修订信息?

另一种方法是将属性(使用Fluent NHibernate)映射到实体,例如一个entity.LatestRevisionDateTime财产。

这是必需的,因为我们有一些屏幕显示最新的修改日期时间和实体被修改的用户。我们还需要至少一个查询返回自特定日期以来已修改的实体。如果我们不需要加入内存(更少的DB往返,更少的内存),这将更容易和更好的性能。

我们正在使用:

  • NHibernate 4.0.3.400
  • FluentNHibernate 2.0.1.0
  • Hibernate.Envers 2.0.0

1 个答案:

答案 0 :(得分:0)

要在一个语句中获取实体和修订信息,您可以使用

session.Auditer().CreateQuery()
   .ForHistoryOf<YourEntityType, YourRevisionType>()
   .Add([some filters])
   .Results()

要将最新/当前实体与修订对象一起使用,我认为这有效(AFK因此无法验证)

session.Auditer().CreateQuery()
   .ForHistoryOf<YourEntityType, YourRevisionType>()
   .Add(AuditEntity.RevisionNumber().Maximize().ComputeAggregationInInstanceContext())
   .Results()