NHibernate.DuplicateMappingException выдается при попытке использовать наследование - PullRequest
0 голосов
/ 07 июня 2019

При попытке сопоставить подкласс (Patient) с производным (Person) с помощью Fluent NHibernate выдается NHibernate.DuplicateMappingException.

Я создал следующую структуру класса для наследования.

Class Diagram for patient and person.

Кроме того, вот мой БД для двух таблиц:

* +1012 *Database for patient and person.

Ниже приведена карта класса моего пациента и человека:

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

Попытавшись исправить это, я пришел к блокпосту, знает ли кто-нибудь еще, что может быть причиной этого, поскольку конфигурация не добавляет одну и ту же карту классов дважды.

...