2013-07-13 41 views
0

我的數據庫中有兩個表,即超類和子類的主數據。然而,在我的申請,我有如何映射沒有表的父類的子類

abstract public class TierSettings 
{ 
    public Guid id { get; set; } 
    public string SomeTierSetting { get; set; } 
} 

abstract public class PricingStrategy : TierSettings 
{ 
    public string StrategySetting1 { get; set; } 
    public string StrategySetting2 { get; set; } 
} 

public class FirstPricingStrategy : PricingStrategy 
{ 
    public PricingStrategyType Strategy { get { return PricingStrategyType.Strategy1; } } 
    pubic Decimal Value { get; set; } 
} 

public class SecondPricingStrategy : PricingStrategy 
{ 
    public PricingStrategyType Strategy { get { return PricingStrategyType.Strategy2; } } 
    public Decimal Value { get; set; } 
} 

我的數據庫中兩個是會從底部子裝它的數據之間的中間階級...我只是有2個表:

TierSettings(
    Id Guid Primary Key, 
    SomeTierSetting NVarChar(100) 
) 

PricingStrategies(
    Id Guid Primary Key, Foreign Key References Parent(Id), 
    StrategySetting1 NVarChar(100), 
    StrategySetting2 NVarChar(100), 
    StrategyType Int, 
    Value Float 
) 

我m有問題映射我的hbm.xml文件中的關係。如果我將各個PricingStrategy類映射爲擴展層,則我無法訪問StrategySetting屬性...但我的PricingStrategy類不直接映射到數據庫。

我需要能夠查詢這樣:

var items = from items in session.Query<TierSettings>() 
      select item; 

foreach(var item in items) 
{ 
    Console.WriteLine(item.Value); 
} 

我怎麼能據此構建我的映射文件?

回答

0

退房「每個具體子類表」模式

Table per concrete subclass pattern

+0

謝謝,我已經看了這一點,但無論是我失去了一些東西,或者沒有考慮到這一事實我有一張桌子大致同化我的頂級抽象類。我無法將我所處的位置與需要的位置連接起來......你能否提供進一步的解釋? – BobTheBuilder