我有一个实体,在两个表中定义了流利的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”表的列
有什么想法吗?
答案 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”); });