我试图让自己的ID遵循这个简单的规则来改变一个约定:产品代码,CustomerCode,OrderCode等等等等
我已经找到了一种简单的方法来做到这一点添加约定:FluentNhibernate和参考
public class PrimaryKeyNameConvention : IIdConvention
{
public void Apply(FluentNHibernate.Conventions.Instances.IIdentityInstance instance)
{
instance.Column(instance.EntityType.Name + "Code");
}
}
现在我已经得到了我想要的东西,但似乎FluentNhibernate拒绝申请与列引用我的主键相同的规则。 EX:我的表客户将有一个名为PK CustomerCode但我的表订购将有一个参考列名为CUSTOMER_ID。 我试过不同的方式重命名列Customer_Id在CustomerCode(表订购),但似乎没有任何工作正常。 这似乎工作的唯一解决办法是增加一个惯例是这样的:
public class ReferenceConvention : IReferenceConvention
{
public void Apply(FluentNHibernate.Conventions.Instances.IManyToOneInstance instance)
{
instance.Column(instance.Property.PropertyType.Name + "Code");
}
}
但现在FluentNhibernate创建其中引用我的主键的两列:CostumerCode和CUSTOMER_ID。
我搞不清楚我做错了什么。 任何帮助将被折衷。
问候,
阿尔贝托
谢谢詹姆斯, 它的工作。 我已经应用了这两个约定,它按预期工作: PrimaryKeyNameConvention + ForeignKeyConvention Alberto – LeftyX 2010-08-17 09:19:48