1

在当前的项目中,我们正在尝试使用不同的方法来填充ViewModel来自 Entity Framework 的对象。目前,在收到EntityModel我们使用扩展方法的列表后:

public static IEnumerable<ViewModel> GetViewModel(this IEnumberable<EntityModel> data){}

此扩展方法定义在与对象相同的命名空间中,ViewModel以使其与ViewModelASP.NET MVC 中的特定控制器密切相关。

具体来说,我们正在寻找来自开发社区的反馈:

  • 这是使用扩展方法的合适地方吗?我们很担心,因为这似乎是从 OOP 中解脱出来的,更像是一种“创可贴”的解决方案。
  • ViewModel什么是从对象填充对象的“经过试验和测试”的方法EntityModel。我们尝试了以下方法:
    • 手动分配控制器中的每个字段(视图和控制器之间的耦合过多)
    • 将 Entity/ViewModel 对象传递给 View Model 构造函数(迄今为止最好,但 ViewModel 与实体耦合)

提前感谢您的任何建议/帮助。

4

1 回答 1

2

建议将 EntityModel 和 ViewModel 之间的映射从两者中解耦。如果映射管道与视图耦合,则将来很难为不同的目的而放入新视图。如果绑定到 EntityModel,则很难使用相同的视图放入新的实体模型。无论哪种方式,如果映射基础架构与其中任何一个相关联,则独立发展视图模型和实体模型会更加困难。

我建议映射应该是一个独立的架构构建块,并进一步建议您将 AutoMapper 视为该组件的实现。

http://automapper.codeplex.com/

于 2012-11-12T20:43:50.363 回答