【问题标题】:How to map two different classes into one ViewModel with Automapper?如何使用 Automapper 将两个不同的类映射到一个 ViewModel 中?
【发布时间】:2012-02-22 10:21:54
【问题描述】:

我正在用 C# 和 Razor 开发一个 ASP.NET MVC3 应用程序。应用的架构分为数据访问层(EF类+Repository)、服务层、控制器、ViewModels和View。

在我从服务层获得的控制器中:

  1. 来自方法Product GetProduct(id),一个Product对象,其中包含要在视图中显示的产品的所有信息

  2. 来自方法Filter GetFilter() 一个Filter 对象,其中包含用于搜索过滤器的所有信息,例如要从下拉列表中选择的产品列表等...

    李>

现在,如果我使用 AutoMapper,如何将这些信息映射到 SelectProductViewModel 类中?

public class SelectProductViewModel
{
    public Product ProductToDisplay { get; set; }
    public Filter SearchFilter { get; set; }
}

【问题讨论】:

    标签: asp.net-mvc-3 viewmodel automapper


    【解决方案1】:

    AutoMapper 用于将单个源类型映射到单个目标类型。您不能在这种情况下使用它。所以它可以很简单:

    var model = new SelectProductViewModel
    {
        ProductToDisplay = service.GetProduct(id),
        SearchFilter = service.GetFilter()
    };
    

    【讨论】:

    • 谢谢!由于它在这种情况下不起作用,我仍然不明白哪个附加值可能会给应用程序提供自动映射器
    • Automapper 在您需要将属性从对象复制到 POCO 或 DTO 时具有价值,从而减少了繁重的工作。这是它的目的,它应该仅用于此目的。
    • @MikeSw,当你说对象时,你是指ViewModel's对象吗?因为POCO 是领域模型还是真实模型对吧?
    • @stom POCO 是任何没有关联 db 特征的对象
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    相关资源
    最近更新 更多