Чтобы добавить контрольный журнал в наше приложение, мы решили использовать 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;
}
}
Envers решает, какой RevisionListener
использовать в зависимости от атрибута RevisionEntity
, которым украшен ваш класс:1007 *
[RevisionEntity( typeof( RevisionListener ) )]
Я использую шаблон ServiceLocator для ввода моего средства доступа в RevisionListener
.В настоящее время это единственное место, где я должен использовать ServiceLocator и действительно хочу от него избавиться.
Есть ли другой, гибкий способ внедрить мой UserAccessor в RevisionEntity?