簡體   English   中英

在多個項目中配置AutoMapper

[英]Configuring AutoMapper in Multiple Projects

我目前已經構建了一個MVC解決方案,它包含一個Web項目(控制器/視圖/腳本),服務項目(業務層,構建視圖模型)和存儲庫項目(數據訪問層)。

我過去在我的項目中使用過AutoMapper,並嘗試在此解決方案中配置AutoMapper。 通常,我在MapperConfig.cs配置我在Global.asax.cs調用的所有映射。

我的問題是我通常配置AutoMapper的Web項目只引用了服務項目,而服務項目只引用了數據項目。 因此,當我像往常一樣配置我的地圖時,由於Web項目沒有引用數據項目,我無法為數據項目定義地圖。 我需要一種方法來配置我的數據訪問層映射,而無需將數據項目的引用添加到Web項目。

項目依賴關系圖如下所示:

Web Proj - > Services Proj - > Data Proj

我怎么能克服這個?

有沒有必要有在所有項目中一個映射注冊文件,尤其是你說你沒有任何交叉類型。

最簡單的方法是為每個項目定義一個配置文件,讓這些配置相互調用,重復程序集的分層依賴關系 ,如下所示:

Global.asax.cs --> WebProjMapRegistrations.Register()-->ServicesMapRegistrations.Register()-->DataMapRegistrations.Register()

或者,您可以使用Assembly Scanning進行自動配置

如@Jimmy Bogard所述,當您運行Web應用程序時,應用程序的所有程序集最終都會加載到您的應用程序域中 - 因此您可以從所有程序集中獲取所有配置文件並將它們添加到映射器配置: 如何初始化AutoMapper ASP.Net webapp中引用的項目DLL中的配置文件

另一種適用於ASP.NET應用程序的替代方法可以在這里找到: 在引用的dll中放置AutoMapper地圖注冊的位置

我在一些ASP.Net MVC項目中處理這個問題的方法是使用AutoMapper Profiles

您可以創建單獨的映射配置文件,以處理為該項目/程序集中的對象創建映射。

然后,您可以手動將配置文件添加到整體配置中,也可以使用反射/裝配掃描自動加載配置文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM