我继承了一个MVC项目,该项目利用NHibernate作为使用Fluent NHibernate配置的ORM,我试图修改其中一个实体类但得到一个非常无用的异常:

NHibernate.dll中发生了'NHibernate.MappingException'类型的异常但未在用户代码中处理附加信息:(XmlDocument)(3,6):XML验证错误:命名空间'urn:nhibernate-中的元素'class' mapping-2.2'在命名空间'urn:nhibernate-mapping-2.2'中具有无效的子元素'property' . 期望的可能元素列表:命名空间'urn:nhibernate-mapping-2.2'中的'meta,subselect,cache,synchronize,comment,tuplizer,id,composite-id' .

在对实体模型进行一些更改后,每次应用程序启动时都会发生这种情况 . 我已经为 ExampleEntity 添加了一个名为 EntitySettings 的新属性,这是一个包含布尔值的简单类 . 我正在尝试将这个一对一子类映射到父表中的列 .

public class ExampleEntity
{
    public virtual long Id { get; set; }
    ...
    // I've added the following member:
    public virtual EntitySettings EntitySettings { get; set; }
}

// New class
public class EntitySettings
{
    public virtual bool FlagA { get; set; }
    public virtual bool FlagB { get; set; }
    public virtual bool FlagC { get; set; }
}

我已经“流利地”配置如下:

public class ExampleEntityMapping : IAutoMappingOverride<ExampleEntity>
{
    public void Override(AutoMapping<ExampleEntity> mapping)
    {
        ...
        mapping.Component(x => x.EntitySettings, comp =>
        {
            comp.Map(x => x.FlagA).Column("EntitySettingsFlagA");
            comp.Map(x => x.FlagB).Column("EntitySettingsFlagB");
            comp.Map(x => x.FlagC).Column("EntitySettingsFlagC");
        });
    }
}

我不太了解NHibernate了解如何对此进行故障排除和谷歌搜索错误不会产生任何有意义的东西 . 谁能指出我正确的方向?

Update

我已将我的 EntitySettings 类修改为一个结构,由于某种原因,这现在可行 . 然而,这对我来说似乎是不好的做法,因为这个对象应该是可变的 . 是否有任何配置我缺少能够使用类作为映射中的组件?