NHibernate 3.2按约定映射生成不必要的外键列

NHibernate 3.2按约定映射生成不必要的外键列,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,我有几节课是这样的: 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;} } mapper.AfterMapManyToOne +=

我有几节课是这样的:

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;}
}
mapper.AfterMapManyToOne += (inspector, member, map) =>
{
    map.Column(member.LocalMember.Name + "Id");
    // ...
};
我正在使用NHibernate 3.2中的ConventionModelMapper和SchemaUpdate在我的SQL Server数据库中生成模式,我希望用户类的Client属性映射到带有外键的
ClientId
列。我的约定代码如下所示:

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;}
}
mapper.AfterMapManyToOne += (inspector, member, map) =>
{
    map.Column(member.LocalMember.Name + "Id");
    // ...
};

这是可行的,因为我得到了一个列
ClientId
,该列被映射为外键,但我也得到了一个
Client
列,该列也被映射为外键。NHibernate似乎既将客户机属性视为标准属性(从而为其生成
Client
列),也将客户机属性视为多个属性(导致额外的
ClientId
列)。如何防止生成
客户端

我刚刚复制了您的确切代码,在将属性虚拟化后,行为是预期的(只有一列,ClientId)