2011-01-26 128 views
2

我有已成功映射功能NHibernate自動映射繼承和忽略抽象屬性

產品(鹼)

PdfProduct(從產品繼承)& OtherProduct(繼承產品)

繼承結構

這些工作正常,我用hmb.xml文件做了類似的事情。

在以前的項目,我必須當我試圖找出什麼類型的產品是一個問題,但我不能這樣做,因爲它是一個代理(產品PdfProdcut)。

爲了解決這一點,我添加了一個抽象屬性到基產品和overrided它在其它類返回的枚舉器。

當我這樣做與XML映射我只是didnt映射類型列,一切都很好。

現在我試圖自動映射繼承關係,它會自動將抽象屬性映射到子類,但這不是必需的,因爲它不在數據庫中。

任何想法如何,我告訴它忽略這些?作爲孩子的關係不會得到一個映射生成im不知道在哪裏把忽略語句。

任何幫助將greatfully接收。

回答

2

功能NHibernate有忽略,你可以在設置中使用proprty方法:

.ForTypesThatDeriveFrom<Product>(p => p.IgnoreProperty(x => x.Type)) 

順便說一句,我們加入了自我屬性的基類解決了這個問題。此屬性將始終返回正確的(非代理)類型:

public virtual Product Self 
    { 
     get { return this; } 
    } 
+0

我已添加自我屬性,並且可以正常工作。我忽略了產品映射忽視自我。這工作,因爲財產是在產品類 – sianabanana 2011-01-28 09:17:40

相關問題