NHibernate没有获取联接

时间:2011-01-24 21:53:21

标签: nhibernate fluent-nhibernate

我有一个实体,在两个表中定义了流利的nhibernate

Table one:
Employee
---------
Id,
Name

Table Two:
Salaries
--------
Employee_Id,
Salary

在Fluent NHibernate上,我将它定义为:

EmployeeMap : ClassMap<Employee>
{
public EmployeeMap()
{
   Table("Employee");
   Map(x => x.Id);
   Map (x => x.Name);
   Join ("Salaried", m =>
   {
      m.Map (x => map.Salary);
      m.KeyColumn("EmployeeId");
    });
}
}

当我进行Session.Get如下:

Employee e = session.Get<Employee>(employeeId);

然后我获得了Employee的所有细节,除了来自“Salaries”表的列

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

我建议你像这样使用HasOne方法:

EmployeeMap : ClassMap<Employee>
{
     public EmployeeMap()
     {
       Table("Employee");
       Map(x => x.Id);
       Map (x => x.Name);
       HasOne(x=>x.Salary).PropertyRef(r=>r.EmployeeId);
    }

}

答案 1 :(得分:0)

Employee正在加载延迟,因此如果您访问Salary属性,NHibernate将只调用数据库。

答案 2 :(得分:0)

join mapping中的表和KeyColumn名称错误。应该是:

加入(“工资”,m =&gt;    {       m.Map(x =&gt; map.Salary);       m.KeyColumn( “EMPLOYEE_ID”);     });