2012-10-21 72 views
0

所以我有一種情況,我有共同的基類型,但我需要映射到基於子類型的不同視圖。映射到基於子類型的不同視圖

它看起來像我可以用一個通用的映射類來處理繼承

http://geekswithblogs.net/nharrison/archive/2010/07/09/inheriting-a-class-map-in-fluent-nhibernate.aspx

但我怎麼能有條件地映射到基於子類型有不同的看法?我看到一個EntityType屬性,但它說它已過時,並將在下一個版本中變爲私有。

作爲一個例子,我有一個ContactInfo的基類是聯繫人類型之間的標準,但值來自不同的地方,取決於聯繫人類型,我將通過SQL視圖處理。

回答

0

使用引用的實體來自不同的表

class ContactInfo 
{ 
    public virtual long Id { get; set; } 
    public virtual ContactDetails Details { get; set; } 
} 

public ContactInfoMap 
{ 
    ... 
    ReferencesAny(x => x.Details) 
     .EntityIdentifierColumn("details_id") 
     .EntityTypeColumn("contactType") 
     .IdentityType<long>() 
     .AddMetaValue<FooContactDetails>("1") 
     .AddMetaValue<BarContactDetails>("4"); 
} 
+0

我最終只是重複的代碼爲每個實體的任何映射。這意味着每種類型的地圖 –