我们使用NHibernate.Envers扩展来进行审计。因此,审计实体是即时生成的,尽管它们不属于我们的业务模式。
但是NHMetadataBuilder调用了GetMappedClass方法,并且不区分这些审计实体和我们的业务实体。但是,它会在以后为这些审计实体崩溃。 GetMappedClass返回的类型是System.Collections.IDictionnary,显然没有任何意义可以添加到元数据中。
目前,我们只是通过在BuildMetadata方法中添加一个安全措施来忽略这些实体:
foreach (var meta in classMeta.Values)
{
if (!meta.EntityName.EndsWith("_AUD"))
{
AddClass(meta);
}
}
你能想到更通用的方法吗?