我正在Fluent NHibernate中尝试子类映射。
在父类映射中,我必须指定ID列名以防止FNH猜错:
Id(x => x.Id).Column("UserId");
我还需要在子类映射中指定ID(或外键,如果你喜欢)字段名,因为FNH也猜错了。我该怎么做?
答案 0 :(得分:0)
我还没有找到直接修改映射文件本身的方法,但是我发现重写Fluent NHibernate的外键约定就行了:
public class FKConvention : ForeignKeyConvention
{
protected override string GetKeyName(FluentNHibernate.Member property, Type type)
{
if (property == null)
{
// Relationship is many-to-many, one-to-many or join.
if (type == null)
throw new ArgumentNullException("type");
return type.Name + "Id";
}
// Relationship is many-to-one.
return property.Name + "Id";
}
}
必须按照本页底部的说明注册新约定:http://wiki.fluentnhibernate.org/Conventions。