为了向我们的应用程序添加审计跟踪,我们决定使用 NHibernate.Envers。为了允许特定于应用程序的修订跟踪,DefaultRevisionEntity
使用特定于用户的数据进行了扩展。
public virtual void NewRevision( object revisionEntity )
{
var revisionData = revisionEntity as Revision;
if( revisionData != null )
{
// Set additional audit data.
var identity = UserAccessor.CurrentIdentity;
revisionData.UserId = identity.UserId;
revisionData.EmployeeId = identity.EmployeeId;
revisionData.UserName = identity.Name;
}
}
EnversRevisionListener
根据RevisionEntity
您的班级装饰的属性决定使用哪种:
[RevisionEntity( typeof( RevisionListener ) )]
我正在使用 ServiceLocator 模式将我的访问器注入到RevisionListener
. 目前这是我必须使用 ServiceLocator 并且真的想摆脱它的唯一地方。
是否有另一种灵活的方式将我的 UserAccessor 注入到 RevisionEntity 中?