【发布时间】:2009-08-27 21:00:06
【问题描述】:
故事: 我有类用户和类组织:用户。我没有对这些类使用任何映射,让 FNH 自动进行映射。然后,我添加了
public class OrganizationMap : IAutoMappingOverride<Organization>
{
public void Override(AutoMap<Organization> mapping)
{
}
}
请注意,没有覆盖。所以我没想到 FNH 的行为会发生任何变化。但我得到了这个(实际上是在模式导出期间):
NHibernate.MappingException: (XmlDocument)(2,4):XML 验证 错误:元素“类”在 命名空间'urn:nhibernate-mapping-2.2' 内容不完整。清单 预期的可能元素:'元, 子选择,缓存,同步, 评论、tuplizer、id、composite-id' 在命名空间中 'urn:nhibernate-mapping-2.2'.
生成的 Orders.Core.Organization.hbm.xml 确实是空的:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-access="">
<class name="Orders.Core.Organization, Orders.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" table="Organizations" xmlns="urn:nhibernate-mapping-2.2" />
</hibernate-mapping>
所以,在我查看了 User.hbm 之后,我明白了 - 我需要像这样覆盖基类中的组织:
public class UserMap : IAutoMappingOverride<User>
{
public void Override(AutoMap<User> mapping)
{
mapping.JoinedSubClass<Organization>("ColumnId", m => {...}
);
}
}
但是,我最好在组织的单独映射覆盖类中执行此操作...毕竟,如果我在单个 Override 方法中有 5 个子类,映射会变成什么。
这可能吗?
【问题讨论】: