2016-11-05 60 views
0

我試圖學習如何使用AutoMapper,我試圖弄清楚如何使用而不必連接不同的圖層。正確使用AutoMapper

例如,我有DataLayer,BusinessLayer和UILayer。 要從DataLayer傳遞/映射到BusinessLayer,我必須在BusinessLayer中引用DataLayer實體。 如果我嘗試從BusinessLayer傳遞/映射到UILayer,則會發生同樣的情況,在這種情況下,我需要引用來自UILayer的BusinessLayer。

這裏的解決方案出現,我們需要一個額外的組件(共享/共享),將自動執行此操作,而無需對夫婦的數據層,BusinessLayer和UILayer彼此間的所有層之間...

不知道如何要做到這一點,我可以使用這個例子嗎?這個問題如何得到解決?

+1

您通常在與數據層分離的獨立庫中定義模型;業務層等。 。 – MickyD

+1

您真正需要做的就是爲每個想要映射的類對之間的映射設置配置。不要反套 –

回答

1

除非您反轉層之間的依賴關係,否則看起來並不是那麼糟糕。

在您的業務層中引入UI依賴關係會很難看,但由於UI層位於業務層之上,因此您可以在此處混合使用 UI和業務層。

在一天結束時,AutoMapper取代了您手動執行的操作:將屬性從一個對象逐個設置到另一個對象。 如果您不使用AutoMapper就可以做到這一點會發生什麼?我相信你需要業務層參考你的UI層來執行這樣的映射。

+0

同意,AutoMapper是偉大的,我也同意用戶界面引用BL,但BL對DL的引用又如何?我的理解是,一切應該在BLL周圍「成長」,而不是相反......我認爲的一個解決方案是讓BL實體在BL和DL上下行走,但在此之前我想要知道是否有更好的解決方案?! –

+1

@J_PT也許你錯了。業務層只是堆棧中的另一個層。它應該建立在數據層之上,並且應該位於UI層的底部。這不是所有應該在商業層面增長的東西。它更多的是關注明確的分離以及層之間的具體關係/關聯。上層應該依賴下層,我假設你正在這樣做。也就是說,你正處於正確的軌道:D –

+0

我在尋找一個解決方案,在每個圖層上的實體之間實現抽象。 –