Свободная проблема с отображением Nhibernate / Проблема с запросами - PullRequest
0 голосов
/ 04 мая 2018

Спасибо за помощь всем.

Я использую Fluent Nhibernate и у меня проблемы с отображением.

Так что в основном у меня есть две таблицы ... Человек и пациент. У Person есть PK с именем Id, а у Patient есть PK с именем PersonID, который также является FK для Person.Id.

Table - Person
PK - Id

Table - Patient
PK - PersonId (FK to Person.Id)

Я старался всеми возможными способами сопоставить эти две таблицы вместе. Прямо сейчас у меня есть следующее:

Person.cs

public class Person
{
    public virtual int Id { get; set; }     
    public virtual Patient Patient {get; set; }
    public virtual bool IsActive { get; set; }
}

PersonMap.cs

public class PersonMap
{
     public PersonMap()
     {
         Id(x => x.Id, "Id").GeneratedBy.Assigned();

         HasOne(x => x.Patient).Constrained();

         Map(x => x.IsActive);
     }
}

Patient.cs

public class Patient
{
    public virtual int PersonId { get; set; }
}

PatientMap.cs

public class PatientMap
{
    public PatientMap()
    {
        Id(x => x.PersonId).GeneratedBy.Assigned();
    }
 }

Так что это отображение работает .... но, очевидно, только в одном направлении. Что хорошо для моих целей.

Когда я запускаю следующий запрос, он работает нормально. Он возвращает 10 результатов, как и ожидалось.

var query = _repository.Find<Person>().Take(10).ToList();

Однако, если я добавлю .Where () в mix, это выдаст ошибку.

var query = _repository.Find<Person>().Where(x => x.IsActive == false).Take(10).ToList();

Приведенное выше утверждение дает мне следующую ошибку.

enter image description here

Я не могу понять, чего не хватает. Я попытался сопоставить обе стороны отношений с HasOne, References, CompositeKey и т. Д. Я стараюсь избегать использования HasMany, потому что всегда есть только одна.

Чего мне не хватает?

Спасибо,

-ZD

...