感谢大家的帮助。
我正在使用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();
上述声明给出了以下错误。
我无法理解遗漏的东西。我已经尝试使用HasOne,References,CompositeKey等映射关系的两个方面。我试图避免使用HasMany,因为总是只有一个。
我错过了什么?
谢谢,
-zd