に列名を無視して、私はシャープアーチのEntityクラスを継承する抽象基本クラスを持っている:流暢NHibernateはをオーバーライドIdプロパティ
/// <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; }
}
}
これは、従来のDBにあり、実際にId列が「HelpPageID」と呼ばれているので、私は単にEntity
を継承するとき
mapping.Id(x => x.Id, "HelpPageID");
HelpPage
を照会するために生成されたSQLが正常に動作します:として私はいくつかのマッピングのオーバーライドを持っています。しかし、IndexedEntity
を継承すると、sqlに変換すると、列名のオーバーライドは無視され、その代わりにId
が使用され、失敗します。
編集 クラスに直接オーバーライドを置くようオーバーライドを有する一般的な問題は、同じ正味の効果を有している
どの継承戦略を使用していますか? TPH? – Firo
はいデフォルトのTPH –