我有这个域层次结构:
用户 - > EntityWithAuditDate - >实体
这是域名:(简化)
public class User : EntityWithAuditDate
{
public User(){}
public virtual string Name { get; set; }
}
public abstract class EntityWithAuditDate : Entity
{
public EntityWithAuditDate() { }
public virtual DateTime? CreatedAt { get; set; }
}
映射(简化):
<class name="User" table="Users" abstract="false">
<id name="Id" type="Int32" column="UserId">
<generator class="identity" />
</id>
<property name="Name" type="String"/>
<property name ="CreatedAt"/>
</class>
当我跑mapping integration unit test时,我得到了 这个错误:
Tests.AltNetTime.Data.NHibernateMaps.MappingIntegrationTests.CanConfirmDatabaseMatchesMappings: FluentNHibernate.Cfg.FluentConfigurationException :无效或不完整 创建时使用配置 一个SessionFactory。校验 PotentialReasons集合,和 InnerException以获取更多详细信息。
未配置数据库 通过数据库方法。
----&GT; FluentNHibernate.Cfg.FluentConfigurationException :无效或不完整 创建时使用配置 一个SessionFactory。校验 PotentialReasons集合,和 InnerException以获取更多详细信息。
未配置数据库 通过数据库方法。
----&GT; NHibernate.MappingException: 无法编译映射 document:(XmlDocument)----&gt; NHibernate.DuplicateMappingException: 重复的类/实体映射 AltNetTime.Core.User TearDown: System.Reflection.TargetInvocationException :例外已被抛出 调用的目标。 ----&GT; System.Collections.Generic.KeyNotFoundException :给定的密钥不存在于 字典。
如果User类继承自Entity,则传递单元测试。 此外,我不得不从映射文件中删除CreatedAt属性。 显然,EntityWithAuditDate出了问题 类。我不确定是什么导致重复的类/实体映射。 有任何想法吗?
感谢。
答案 0 :(得分:1)
您需要在项目中更改Is BaseType约定。您可以找到here
的其他信息希望它会有所帮助。
答案 1 :(得分:0)
如果您复制并粘贴* .hbm文件并忘记更改
,则通常会触发重复的类/实体映射因此,在两个* .hbm文件中,name属性中的值相同。