gpt4 book ai didi

c# - 在多个项目中配置 AutoMapper

转载 作者:太空狗 更新时间:2023-10-30 00:37:44 26 4
gpt4 key购买 nike

我目前已经构建了一个 MVC 解决方案,其中包含一个 Web 项目( Controller / View /脚本)、服务项目(业务层、构建 View 模型)和存储库项目(数据访问层)。

我过去在我的项目中使用过 AutoMapper,现在正尝试在此解决方案中配置 AutoMapper。通常,我在 MapperConfig.cs 中配置所有 map ,它在 Global.asax.cs 中调用。

我的问题是,我通常配置 AutoMapper 的 Web 项目仅引用服务项目,而服务项目仅引用数据项目。因此,当我像往常一样配置我的 map 时,由于 Web 项目没有对数据项目的引用,我无法为数据项目定义 map 。我需要一种方法来配置我的数据访问层映射,而无需将数据项目的引用添加到 Web 项目。

项目依赖图如下所示:

Web 项目 --> 服务项目 --> 数据项目

我怎样才能克服这个问题?

最佳答案

没有必要在所有项目中都有一个单一映射注册文件,尤其是你说你没有任何横切类型。

最简单的方法是为每个项目定义一个配置文件,并让这些配置相互调用,重复程序集的分层依赖关系,如下所示:

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

或者,您可以使用 Assembly Scanning for auto configuration

正如@Jimmy Bogard 所描述的,当您运行您的网络应用程序时,您应用程序的所有 程序集最终将加载到您的应用程序域中 - 因此您可以从所有程序集中获取所有配置文件并将它们添加到映射器配置:How to Initialize AutoMapper Profiles in referenced project DLLs in ASP.Net webapp

可在此处找到适用于 ASP.NET 应用程序的另一种替代方法: Where to place AutoMapper map registration in referenced dll

关于c# - 在多个项目中配置 AutoMapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45492530/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com