2012-03-29 24 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)