2012-08-24 315 views
0

內部vb.net ORM是使用存儲過程開發的,以獲取數據來填充複雜層次結構中的單個對象。我們已經從每個映射操作的存儲過程轉移到在運行時建立並執行的動態SQL,這應該增加功能和性能。每個類都有自己的映射代碼,說明屬性爲db列映射,表,基數等。ORM將數據映射到對象

我的問題是,由於對象模型的複雜性,由ORM /映射器代碼構建的對象將調用更多的數據比需要,從而妨礙性能。

這是對象模型或ORM還是兩者的問題?

有人可以提出一個設計模式/想法來幫助管理這個問題嗎?

我的第一個想法是,我們應該有額外的功能出映射類來控制數據檢索的深度,但我怎麼可能幹淨地實現我不知道。任何有關這個問題的想法或想法都將大受歡迎。

+0

通過更多的數據,你的意思是一個對象的關係數據,你存儲爲一個屬性(單行或多行?) –

+0

我希望這是有道理的,但通過更多的數據,我的意思是映射類和後續子映射類基於對象層次結構構建單個sql語句,這可能意味着您在單個調用中獲得100行數據。將其返回並映射回具有100個孩子的單個對象作爲示例。問題在於每個對象都有自己的映射,以便類A將使用類b的映射,等等。當我可能只需要a和b類。問題在於性能和遞歸的可能性。 – Richard

+0

我會延遲抓取去爲Vikdor建議,也看看Repository模式和[短小精悍點網(http://code.google.com/p/dapper-dot-net/) –

回答

0

像Hibernate這樣的ORM使用"Lazy Fetch" strategy來處理這個場景,其中任何深度的對象關聯都保持不變,但是當第一次訪問層次結構中的對象時,它們是按需獲取的。您可能想看看Proxy Pattern以瞭解如何完成此操作。