【发布时间】:2010-08-16 12:32:11
【问题描述】:
我试图更改约定,以便我的 ID 遵循以下简单规则:ProductCode、CustomerCode、OrderCode 等。
我找到了一种添加约定的简单方法:
public class PrimaryKeyNameConvention : IIdConvention
{
public void Apply(FluentNHibernate.Conventions.Instances.IIdentityInstance instance)
{
instance.Column(instance.EntityType.Name + "Code");
}
}
现在我得到了我想要的,但似乎 FluentNhibernate 拒绝对引用我的主键的列应用相同的规则。 例如:我的表 Customer 将有一个名为 CustomerCode 的 PK,但我的表 Order 将有一个名为 Customer_Id 的参考列. 我尝试了不同的方法来重命名 CustomerCode 中的列 Customer_Id(表 Order),但似乎没有任何工作正常。 唯一可行的解决方案是添加这样的约定:
public class ReferenceConvention : IReferenceConvention
{
public void Apply(FluentNHibernate.Conventions.Instances.IManyToOneInstance instance)
{
instance.Column(instance.Property.PropertyType.Name + "Code");
}
}
但现在 FluentNhibernate 创建了两个引用我的主键的列:CostumerCode 和 Customer_Id。
我不知道我做错了什么。 任何帮助将不胜感激。
问候,
阿尔伯托
【问题讨论】:
标签: fluent-nhibernate conventions