流畅的Nhibernate映射问题/查询问题

时间:2018-05-04 04:42:12

标签: c# nhibernate fluent-nhibernate fluent-nhibernate-mapping

感谢大家的帮助。

我正在使用Fluent Nhibernate并遇到一些映射问题。

所以基本上我有两张桌子......人和病人。 Person有一个名为Id的PK,而Patient有一个名为PersonID的PK,它也是Person.Id的FK。

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(),则会出错。

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

上述声明给出了以下错误。

enter image description here

我无法理解遗漏的东西。我已经尝试使用HasOne,References,CompositeKey等映射关系的两个方面。我试图避免使用HasMany,因为总是只有一个。

我错过了什么?

谢谢,

-zd

0 个答案:

没有答案