In integrating NHibernate.Envers with our framework, I'm trying to 
determine how to enable auditing on one table but not on a related table.  
We're using FluentConfiguration, out of a desire to be as POCO as possible.

I have three classes: AuditParent, AuditChild, and NoAuditChild, where 
there's a one-to-many from AuditParent to both other classes.  My Envers 
configuration looks like this:

            var ecfg = new FluentConfiguration();
            ecfg.Audit<AuditParent>()
                .ExcludeRelationData(a => a.NoAuditChildren);
            ecfg.Audit<AuditChild>();

When I run cfg.IntegrateWithEnvers(ecfg), though, I get the following error:

NHibernate.MappingException : An audited relation from 
NHibernate.Envers.Tests.NetSpecific.UnitTests.CustomLists.AuditParent.NoAuditChildren
 
to a not audited entity 
NHibernate.Envers.Tests.NetSpecific.UnitTests.CustomLists.NoAuditChild!
   at 
NHibernate.Envers.Configuration.Metadata.AuditMetadataGenerator.GetReferencedIdMappingData(String
 entityName, String referencedEntityName, PropertyAuditingData 
propertyAuditingData, Boolean allowNotAuditedTarget) 
in AuditMetadataGenerator.cs: line 546
   at 
NHibernate.Envers.Configuration.Metadata.CollectionMetadataGenerator.addOneToManyAttached(Boolean
 fakeOneToManyBidirectional) 
in CollectionMetadataGenerator.cs: line 116
   at 
NHibernate.Envers.Configuration.Metadata.CollectionMetadataGenerator.AddCollection()
 
in CollectionMetadataGenerator.cs: line 94
...

It looks to me like the code is adding AuditedAttribute(TargetAuditMode = 
RelationTargetAuditMode.NotAudited) to the property, but somehow this 
doesn't stop the mapping code from trying to map the relation anyway.  
There may be a problem with the if condition in 
GetReferencedIdMappingData...  I should be able to upload a failing unit 
test on Bitbucket if desired, unless I'm just doing something wrong with my 
configuration.

Aaron V. Humphrey
Pleasant Solutions

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers?hl=en-US.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to