При попытке сопоставить подкласс (Patient) с производным (Person) с помощью Fluent NHibernate выдается NHibernate.DuplicateMappingException
.
Я создал следующую структуру класса для наследования.
Кроме того, вот мой БД для двух таблиц:
* +1012 *
Ниже приведена карта класса моего пациента и человека:
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
Попытавшись исправить это, я пришел к блокпосту, знает ли кто-нибудь еще, что может быть причиной этого, поскольку конфигурация не добавляет одну и ту же карту классов дважды.