当尝试使用Fluent NHibernate将子类(患者)映射到派生(人)时,抛出NHibernate.DuplicateMappingException
。
我为继承创建了以下类结构。
此外,这是我的两个表的数据库设计:
请在下面找到我的患者和人员类别地图:
public class PatientClassMap : SubclassMap<Patient>
{
public PatientClassMap()
{
Table("Patient");
Schema("dbo");
KeyColumn("Id");
Map(x => x.NhsNumber).Column("NhsNumber").Not.Nullable();
}
}
public class PersonClassMap : ClassMap<Person>
{
public PersonClassMap()
{
Table("Person");
Schema("dbo");
Id(x => x.Id).GeneratedBy.Identity();
Map(x => x.FirstName);
Map(x => x.MiddleName);
Map(x => x.LastName);
}
}
用于创建会话的配置如下:
private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2012.ConnectionString(ConnectionString))
.Mappings(m => m.FluentMappings
.AddFromAssemblyOf<PatientClassMap>()
.AddFromAssemblyOf<PersonClassMap>()
)
.BuildSessionFactory();
}
每当我尝试运行WCF服务以检索患者时,都会有以下例外情况返回我:
InnerException: NHibernate.DuplicateMappingException
HResult=-2146233088
Message=Duplicate class/entity mapping PatientDomain.Patient
Source=NHibernate
Name=PatientDomain.Patient
试图解决此问题,我遇到了障碍,其他人是否知道是什么原因造成的,因为配置没有两次添加相同的类映射。