我继承了一个MVC项目,该项目利用NHibernate作为使用Fluent NHibernate配置的ORM,我尝试修改其中一个实体类但得到一个非常无用的异常:
类型' NHibernate.MappingException'的例外情况发生在NHibernate.dll但未在用户代码中处理
附加信息:(XmlDocument)(3,6):XML验证错误:元素'类' in namespace' urn:nhibernate-mapping-2.2'具有无效的子元素'属性'在命名空间' urn:nhibernate-mapping-2.2'。预期可能元素的列表:'元,子选择,缓存,同步,评论,tuplizer,id,composite-id'在命名空间' urn:nhibernate-mapping-2.2'。
在我对实体模型进行一些更改后,每次应用程序启动都会发生这种情况。我已经向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; }
}
我已经配置了#34;流利的"如下:
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,了解如何对此进行故障排除,并且谷歌搜索错误并没有产生任何有意义的信息。有人能指出我正确的方向吗?
更新
我已将我的EntitySettings
类修改为结构,但由于某种原因,现在可以使用了。然而,这对我来说似乎是不好的做法,因为这个对象应该是可变的。我是否缺少能够将类用作映射中的组件的配置?