3

我使用流利NHibernate來映射出現有的數據庫。出於這個原因 - automapping不是我的選擇。如何告訴Fluent NHibernate忽略沒有自動映射的特定屬性?

如何告訴NHibernate不要映射某些屬性?其中許多是隻讀的,而其他的則不需要因爲其他原因而被堅持。

我寫這個在VB.Net。

我得到的典型錯誤消息: 「下面的類型可能不被用作代理 ......應該是‘公共/受保護的虛擬’或‘受保護的內部虛擬’」

我有意沒有作出我的對象Overridable(相當於C#中的虛擬),因爲我不希望NHibernate觸摸它們。

我該如何做到這一點?

+0

我仍然感興趣的是一個較少hack-ish的答案,但我在這篇文章中找到了一個解決方法:http://stackoverflow.com/questions/907576/how-to-tell-fluent-nhibernate-not-to- map-a-class-property 標記爲答案的問題僅適用於AutoMapping,而不適用於ClassMapping。如果你仔細閱讀了這些評論,最後他們提到的只是讓虛擬課程(overridable)成爲可能。 起初這似乎很奇怪,但最後的評論提到,只要您不嘗試映射到該屬性,這樣做就沒有不利影響。它只會創建一個永遠不會使用的代理。 – Origin 2011-12-21 06:35:02

+2

[這裏](http://stackoverflow.com/questions/2278110/nhibernate-exception-method-add-should-be-public-protected-virtual-or-protec)是一個很好的答案,你爲什麼需要使所有方法(當然還有屬性)是虛擬的。這是關於NHibernate,而不是關於FluentNHibernate。 – 2011-12-21 11:33:20

回答

6

爲了讓NHibernate創建動態代理(包括未映射的屬性),所有的屬性和方法必須是可覆蓋的。這並不意味着NHibernate映射你的只讀屬性,它只是要求它們被覆蓋,以便它可以生成類的代理。 This article解釋了這個要求。

+0

感謝您的迴應。此後,我被其他人告知了這一點,但忘記在此更新它。 – Origin 2011-12-23 03:51:14

+0

這是非常不幸的,因爲我有未映射的屬性,我不想重寫或更改: - /但哦,好吧。答案幫助,謝謝。 – 2014-01-16 15:48:03

相關問題