2011-01-24 58 views
0

我有一個在兩個表中定義的功能NHibernateNHibernate的不取加入

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

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

在功能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"); 
    }); 
} 
} 

當我做了會議。得到如下:

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

然後我得到了員工的所有細節,除了來自列「工資」表

任何想法?

回答

0

員工正在延遲加載,所以如果您訪問Salary屬性,NHibernate只會調出數據庫。

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); 
    } 

}

0

表和KeyColumn名稱是錯誤的join mapping。應該是:

加入( 「工資」 中,m => { m.Map(X => map.Salary); m.KeyColumn( 「EMPLOYEE_ID」); });