我把这个自动映射放在哪里

本文关键字:映射 在哪里 | 更新日期: 2023-09-27 17:49:19

HI

我有两个项目,一个用于我的repo和服务层(数据项目(,另一个用于视图、控制器(webUI项目(。

我正在使用automapper,并且我一直在我的控制器中进行所有的映射。假设我收到了一个获取物品的请求。它会到达我的控制器,它会联系服务层,任何业务逻辑都会在这个时候完成。

我通常会得到一个域模型,我会取那个模型,在控制器中我会自动将它映射为视图模型。然后将View模型发回。

这一直运行得很好,因为我能够将我的mvc代码(我的viewModels等(排除在服务层之外。

然而,有两种情况需要使用automapper在服务层中进行映射。

服务层中的这种映射太过其他域对象,而且目前还很小(只有几个属性(。

我应该在服务层中进行映射吗?

如果是,我将这些映射粘贴到哪里?现在,我在我的项目中有它,我的控制器在应用程序启动中注册。

因此,一种选择是将我的映射放在我放置映射的位置(在模型文件夹中的类中(。这样做的问题是,如果我把我的服务层放进另一个项目(比如移动设备(,那么我必须重做所有的映射,因为它不存在。

有什么想法吗?

我把这个自动映射放在哪里

在服务层中有一个名为"ServiceLayerMappings"的类,并从应用程序启动时调用它。

如果您重用服务层,只需调用ServiceLayerMappings.MapThisStuff((或其他方法,您就可以完成所有操作。

public class ServiceLayerMappings
{
     public void Map()
     {
        Mapper.CreateMap<MyServiceClass, ServiceDto>();
     }
}

Global.asax.cs

    protected void Application_Start(object sender, EventArgs e)
    {
         new ServiceLayerMappings().Map()

当然,您可以将其设置为静态或重命名。没关系。