Fluent NHIbernate在覆盖的Id属性上忽略列名

时间:2012-02-16 15:16:06

标签: fluent-nhibernate fluent-nhibernate-mapping

我有一个抽象的基类,它继承了Sharp Arch的Entity类:

  /// <summary>
  /// defines an entity that will ne indexed by a search crawler and offered up as full-text searchable
  /// </summary>
  public abstract class IndexedEntity : Entity
  {
    [DocumentId]
    public override int Id
    {
      get { return base.Id; }
      protected set { base.Id = value; }
    }
  }

这是遗留数据库,实际上Id列被称为“HelpPageID”,所以我有一些映射覆盖为:

mapping.Id(x => x.Id, "HelpPageID");

当我继承HelpPage时,生成的用于查询Entity的sql工作正常。但继承IndexedEntity,当转换为sql时,将忽略列名覆盖,而是将Id用于该列,从而失败。

修改 似乎是覆盖的一般问题,因为直接在类中放置覆盖具有相同的净效果

1 个答案:

答案 0 :(得分:0)

映射覆盖仅针对精确类型执行,而不是在mappingoverride中对类型进行子类化的类型。你必须为子类指定覆盖。