我在哪里进行自动化?

时间:2011-04-05 16:02:36

标签: c# asp.net-mvc asp.net-mvc-3 automapper

HI

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

我正在使用automapper,我一直在我的控制器中进行所有映射。假设我有一个要求获得物品的请求。它将转到我的控制器,它将联系服务层,此时将完成任何业务逻辑。

我通常会得到一个域模型,我会采用该模型,在控制器中我会自动映射它也是一个视图模型。然后发送View模型。

由于我能够将我的mvc代码(我的viewModels等)保留在我的服务层之外,因此效果非常好。

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

服务层中的这种映射太过于其他域对象,而且现在非常小(只有少数几个属性)。

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

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

因此,一个选项可能是将我的映射放在我放置映射的位置(在我的模型文件夹中的类中)。这样做的问题是,如果我将我的服务层并将其弹出到另一个项目(例如移动设备)中,那么我必须重做所有映射,因为它不存在。

所有想法?

1 个答案:

答案 0 :(得分:2)

在服务层中有一个名为“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()

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