0

我正在尝试在 Fluent NHibernate 中进行子类映射。

在父类映射中,我要指定ID列名,防止FNH猜错:

Id(x => x.Id).Column("UserId");

我还需要在子类映射中指定 ID(或外键,如果你愿意)字段名称,因为 FNH 也猜错了。我怎么做?

4

1 回答 1

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 。

于 2010-08-23T10:27:31.580 回答