【问题标题】:NHibernate Envers - error at many-to-many relationship with the same typeNHibernate Envers - 同一类型的多对多关系出错
【发布时间】:2014-08-11 08:31:26
【问题描述】:

我是 NHibernate Envers 的新手,我已经为实体映射多对多关系添加了新字段。

public class Product 
{
// initialization in ctor
...
public virtual ISet<FundProduct> ExcludedFromConversion { get; set; }
...
// mapping in ClassMap
            Set(x => x.ExcludedFromConversion, m =>
            {
                m.Table("ExcludedProduct");
                m.Cascade(Cascade.None);
                m.Key(k => k.Column("ProdId"));
            }, map => map.ManyToMany(p => p.Column("ExcludedProdId")))
...
}

Envers 配置中的这一行不断抛出异常:

protected virtual void ConfigureEnvers() 
{
...       
configuration.IntegrateWithEnvers(enversConf);
}

消息“无法将 'NHibernate.Mapping.Formula' 转换为 'NHibernate.Mapping.Column'。” 和堆栈跟踪的顶部:在 System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext() (...) 中的 " w NHibernate.Envers.Tools.MappingTools.b__0(ISelectable f) 中

我尝试通过添加 [NotAudited] 和 [Audited(TargetAuditMode = RelationTargetAuditMode.NotAudited)] 来禁用对此属性的审核,但没有帮助。

它可以在没有 Envers 的情况下工作(禁用 ConfigureEnvers 方法)。

感谢任何帮助/想法,谢谢!

【问题讨论】:

    标签: c# nhibernate nhibernate-envers


    【解决方案1】:

    可能是this 问题。它已在最新的 envers 版本中得到修复(2.0 CR1 - 它刚刚发布)。你用的是什么版本?

    【讨论】:

    • 本项目使用的是 1.6.0。
    • 您可以尝试从其 1.x 分支手动构建最新的 envers 代码。
    • 作为测试,尝试从多对多映射中的实体中删除公式映射。
    • 感谢您的另一个回答。但是你能说一下,哪个是公式映射吗?
    • 谢谢,伙计!确实,我注释掉了公式映射,它突然编译了:)。但是这些公式相当有用,所以我不能这样。所以我想我的选择是:1. 更新 NH/Envers 2. 摆脱公式映射?
    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    相关资源
    最近更新 更多