2012-02-16 63 views
0

功能NHibernate忽略列名我有一個抽象基類,它繼承了夏普Arch的實體類:上overrided 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」,所以我有一些映射覆蓋爲:

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

查詢HelpPage生成的SQL正常工作時,我只是繼承Entity。但在繼承IndexedEntity時,如果轉換爲sql,則忽略列名覆蓋,而對列使用Id,從而導致失敗。

編輯 似乎是一個普遍的問題與倍率爲直接在類放置覆蓋具有相同的淨效果

+0

你正在使用哪種繼承策略? TPH? – Firo 2012-02-17 09:52:56

+0

是的默認TPH – 2012-02-17 11:24:51

回答

0

映射覆寫僅所需的確切類型執行該子類的類型在mappingoverride不類型。你必須爲子類指定一個覆蓋。

+0

你是指超類?在這種情況下,FNH將會在TPH情景中忽略它,因爲據我瞭解和經驗它是抽象的 – 2012-02-17 13:59:05