2011-01-24 8 views
0

私はこのようにそれを定義した流暢NHibernateのでは流暢NHibernateはNHibernateのはフェッチではありません参加

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

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

で2つの表に定義されたエンティティがあります。

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

従業員が遅延ロードされているため、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");} )参加。

関連する問題