我有几个类看起来像这样:
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;}
}
我正在使用NHibernate 3.2中的ConventionModelMapper和SchemaUpdate在我的SQL Server数据库中生成模式,我希望User类的Client属性映射到带有外键的 ClientId
列 . 我的约定代码如下所示:
mapper.AfterMapManyToOne += (inspector, member, map) =>
{
map.Column(member.LocalMember.Name + "Id");
// ...
};
这是有效的,因为我得到一个映射为外键的列 ClientId
,但我最终还得到了一个 Client
列,它也被映射为外键 . 似乎NHibernate将Client属性视为标准属性(因此为其生成 Client
列),以及ManyToOne属性(导致额外的 ClientId
列) . 如何防止生成 Client
列
1 回答
我刚刚复制了您的EXACT代码,并且在使属性成为虚拟后,行为是预期的(有一个列,ClientId)