【问题标题】:using C# Extension Methods in ASP.NET MVC in MVVM pattern在 MVVM 模式中使用 ASP.NET MVC 中的 C# 扩展方法
【发布时间】:2012-11-12 20:37:50
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: c# asp.net-mvc entity-framework mvvm extension-methods


    【解决方案1】:

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

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

    http://automapper.codeplex.com/

    【讨论】:

    • 谢谢。我们将研究 AutoMapper
    猜你喜欢
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 2010-11-10
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 2016-03-22
    相关资源
    最近更新 更多