C# 我应该把这个放在哪里?

C# 我应该把这个放在哪里?,c#,asp.net-mvc,asp.net-mvc-3,automapper,C#,Asp.net Mvc,Asp.net Mvc 3,Automapper,嗨 我有两个项目,一个用于我的repo和服务层(数据项目),另一个用于我的视图、控制器(webUI项目) 我正在使用automapper,我一直在控制器中进行所有映射。比如说我有个要买东西的请求。它将转到我的控制器,它将联系服务层,任何业务逻辑都将在此时完成 我通常会得到一个域模型,我会得到这个模型,在控制器中,我会自动将它映射到视图模型。然后将视图模型发送回 由于我能够将我的mvc代码(我的viewModels等)排除在我的服务层之外,所以这项工作一直很好 但是,有两种情况需要使用automa

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

我正在使用automapper,我一直在控制器中进行所有映射。比如说我有个要买东西的请求。它将转到我的控制器,它将联系服务层,任何业务逻辑都将在此时完成

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

由于我能够将我的mvc代码(我的viewModels等)排除在我的服务层之外,所以这项工作一直很好

但是,有两种情况需要使用automapper在服务层进行映射

服务层中的这个映射对于其他域对象来说太小了,现在已经非常小了(只有一些属性)

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

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

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


有什么想法吗?

在您的服务层中创建一个名为“ServiceLayerMappings”的类,并从应用程序开始调用它

如果重用服务层,只需调用ServiceLayerMappings.mapthistuff()或其他任何函数,就可以了

public class ServiceLayerMappings
{
     public void Map()
     {

        Mapper.CreateMap<MyServiceClass, ServiceDto>();
     }
}

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

请您解释一下如何在应用程序启动中使用这个类,以及这个类是如何实现和维护的。我最终尝试了一下,但我的做法有点不同。我正在使用Register(RegisterServiceLayerMaps.Register();)而不是您所做的。您只能有一个寄存器方法或其他方法吗?因为当我注册两次时,它似乎会导致我正在工作的汽车制造商崩溃。
    protected void Application_Start(object sender, EventArgs e)
    {
         new ServiceLayerMappings().Map()