2012-10-10 137 views
1

我在使用表每個具體類映射以下情形在功能NHibernate一些問題:流利NHibernate的多態映射挑戰

比方說,我有下面的類定義:

public class Reading { .... } 

public class CarReading : Reading { .... } 

public class TruckReading : Reading { .... } 

public class Alert 
{ 
    .... 
    public virtual Reading AReading { get; set; } 
} 

所以我的問題是如何爲Alert創建映射類,如果它與閱讀類具有一對一的關係(可以是卡車閱讀或汽車閱讀)並指示nhibernate知道從哪個表加載數據(TruckReading表或CarReading表)

public class AlertMap : ClassMap<Alert> 
{ 
    .... 
    HasOne(x => x.AReading); 
} 

如果任何人都可以指出我正確的方向,將不勝感激。

謝謝。

回答

0
public class AlertMap : ClassMap<Alert> 
{ 
    .... 
    ReferenceAny(x => x.AReading) 
     .EntityIdentifierColumn("readingid") 
     .EntityTypeColumn("readingtype") 
     .IdentityType<int>() 
     .AddMetaValue<CarReading>("car") 
     .AddMetaValue<TruckReading>("truck"); 
} 
+0

感謝您的回覆。您放入AddMetaValue中的值是那些存儲在數據庫的ReadingType列中的值? – developer

+0

是的,這也是NH在創建代理時使用哪些值來確定引用的類型以及查詢哪個表 – Firo