MVC 4在哪里写映射逻辑

时间:2013-10-23 20:35:45

标签: c# asp.net asp.net-mvc-4

我正在开发一个MVC 4网站,我的控制器调用一个服务,我必须映射(一对一映射)回复我的viewmodel。我可以想到三种可能的方法: -

  1. 在控制器本身中有映射
  2. 有一个单独的映射层(我的项目中的一个单独的文件夹),我的所有映射逻辑都将驻留在其中,控制器将调用此方法
  3. 在viewmodel类中有映射逻辑。
  4. 理念2和3看起来更好,因为映射方法可以跨控制器重用。

    但我很困惑在2,3中使用哪一个。 如果我使用方法2,责任将被很好地定义,但会添加另一个类文件,这可能使解决方案在长期运行中的可维护性降低

    如果我使用方法3,那么映射逻辑被限制在viewmodel中,但我觉得它违反了SRP(单一责任原则),因为viewmodel类负责显示元素和映射逻辑。

    我们应该在何处放置映射逻辑? 如果您有任何链接,请分享这些链接。

2 个答案:

答案 0 :(得分:2)

就个人而言,我会说停止自杀而只是使用像AutoMapper这样的东西,但是如果你想去手动路线,我推荐选项2的原因与推荐AutoMapper的原因大致相同:这个物品的类型属于库。我不知道这怎么会更难维持。事实上,将所有映射逻辑包含在项目中的一个位置或几个类中,听起来比任何其他解决方案都更容易维护。

答案 1 :(得分:0)

我会提倡选项#2,因为映射层类的责任明确定义。

在我看来,映射逻辑的明显位置完全证明了类数量的增加。我将它比作多个JavaScript文件作为模块,同时增加了要维护的文件数量,更清楚地了解了系统中的内容。