2012-03-29 28 views
0

我有幾個類,如下所示:NHibernate的3.2映射按照慣例產生不必要的外鍵列

public class Client 
{ 
    public int Id {get;set;} 
    public string Name {get;set;} 
} 

public class User 
{ 
    public int Id {get;set;} 
    public string Email {get;set;} 
    public Client Client {get;set;} 
} 

我使用ConventionModelMapper和SchemaUpdate工具從NHibernate的3.2生成的我的SQL Server架構數據庫,我希望User類的Client屬性映射到帶有外鍵的ClientId列。我約定的代碼如下所示:

mapper.AfterMapManyToOne += (inspector, member, map) => 
{ 
    map.Column(member.LocalMember.Name + "Id"); 
    // ... 
}; 

這工作,因爲我得到的是被映射爲外鍵的列ClientId,但我也有一個Client列也被映射爲外鍵結束。似乎NHibernate的被處理客戶端屬性既作爲標準屬性(以及因此產生用於它的Client列),並且也是多對一屬性(導致額外ClientId列)。我怎樣才能防止Client列的產生

回答

0

我剛纔複製你的確切代碼,使虛擬的屬性後,該行爲是預期的(有一列,客戶端Id)