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()
当然,您可以将其设置为静态或重命名。没关系。