自动映射器有什么用?

2024-02-29

What’s 自动映射器 http://www.codeplex.com/AutoMapper for?

它将如何帮助我处理域和控制器层 (asp.net mvc)?


也许一个例子会有所帮助......

假设您有一个很好标准化的数据库模式,如下所示:



Orders       (OrderID, CustomerID, OrderDate)  
Customers    (CustomerID, Name)  
OrderDetails (OrderDetID, OrderID, ProductID, Qty)  
Products     (ProductID, ProductName, UnitPrice)  
  

假设您正在使用一个很好的 O/R 映射器,它可以返回一个组织良好的域模型:



OrderDetail
+--ID
+--Order
|--+--Date
|--+--Customer
|-----+--ID
|-----+--Name
+--Product
|--+--ID
|--+--Name
|--+--UnitPrice
+--Qty
  

现在,您需要显示上个月订购的所有商品。您想将其绑定到平面网格,因此您尽职尽责地编写了一个平面类来绑定:

public class OrderDetailDto
{
    public int ID { get; set; }
    public DateTime OrderDate { get; set; }
    public int OrderCustomerID { get; set; }
    public string OrderCustomerName { get; set; }
    public int ProductID { get; set; }
    public string ProductName { get; set; }
    public Decimal ProductUnitPrice { get; set; }
    public int Qty { get; set; }

    public Decimal TotalPrice
    {
        get { return ProductUnitPrice * Qty; }
    }
}

到目前为止,这还算无痛,但现在怎么办?我们如何将一堆OrderDetail变成一堆OrderDetailDtos 用于数据绑定?

你可以放一个构造函数OrderDto这需要一个OrderDetail,并编写了一大堆乱七八糟的映射代码。或者你可能在某处有一个静态转换类。或者,您可以使用 AutoMapper,并编写如下:

Mapper.CreateMap<OrderDetail, OrderDetailDto>();
OrderDetailDto[] items =
    Mapper.Map<OrderDetail[], OrderDetailDto[]>(orderDetails);
GridView1.DataSource = items;

那里。我们刚刚将原本是一堆令人厌恶的毫无意义的映射代码简化为三行(实际上只有两行用于实际映射)。

这有助于解释目的吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自动映射器有什么用? 的相关文章

随机推荐

  • 每个日期的 SQL 总金额

    我有一个名为 rentals 的表 其中存储如下数据 id rent id start date end date amount 1 54 12 10 2019 26 10 2019 100 2 54 13 10 2019 20 10 20
  • 检查一个列表是否是 pandas Dataframe 中另一个列表的子集

    所以 我有这个包含近 3000 行的 Dataframe 看起来像这样 CITIES 0 A B 1 A B C D 2 A B C 4 X 5 X Y Z 2670 Y Z 我想从 DF 中删除 CITIES 列表包含在另一行中的所有行
  • 如何在 phantomJS 中执行 jQuery Promise?

    我正在尝试在服务器端使用 nodejs 和 phantomjs 来对我们的网站进行 SEO 虽然 ajax 工作正常 但我无法执行我在代码中使用的自定义承诺 我如何让 phantomJS 等到承诺得到解决 下面是我编码的内容 body ad
  • 将 Android 项目档案导入 Eclipse 时出现问题

    如果这是一个愚蠢的新手问题 我很抱歉 我正在使用 Eclipse Helios 版本 并按照developer android com 的建议配置了 Android SDK 我可以毫无问题地创建和运行新项目 但无法使用 导入 gt 将现有项
  • opencv:将标量转换为浮点或双精度类型

    谁能帮我将 openCV 的标量类型转换为 float 或 double 等基本类型 Scalar Sum1 sum arg1 Sum2 sum arg2 theta at
  • 包装单张 - 地图未显示

    我对 Rstudio 中使用的 传单 包有一些疑问 我的问题是 底图没有显示 但在查看器的底部写着 OpenStreeMap 并且还显示了放大和缩小的选项 有人知道这个问题吗 library leaflet m lt leaflet m l
  • 自定义验证器不显示错误消息

    我有一个要求 需要多个字段之一 使用自定义验证器 偶数会触发 返回 false 但不会显示错误消息并且表单会验证 我缺少什么 我尝试过使用和不使用 ValidationSummary Thanks
  • 更新 JList

    我现在制作了一个基于数组列表的 JList 并由 defaultlistmodel 填充 该列表会在连接到服务器时添加人员 但不会显示连接的人员或之后连接的人员 所以 我必须更新 JList 我的问题是 我应该更新什么 是否可以使用运行更新
  • 带标签的维基数据 SPARQL 查询不起作用

    我不明白为什么通过这个查询我无法获得运动和流派标签 SELECT DISTINCT item itemLabel value inception creatorLabel image group concat genreLabel sepa
  • 如何动态导入 python 模块函数?

    假设my function 位于 my apps views 我想导入my function动态地不使用类似的东西exec or eval 有什么办法可以实现这一点吗 我想做类似的事情 my function import func my
  • 如何在msbuild文件中给出相对路径?

    我正在编写一个 msbuild 文件来使用 galio 运行测试 现在 我需要给出
  • 如何在汇编中通过字符串进行索引

    给定变量 var1 db abcdefg NULL 我将如何执行循环来导航每个字母 在 C 中 您可以在循环内执行类似 var x 的操作 然后每次递增 x 有任何想法吗 在 C 和 C 中 字符串以 NUL 结尾 这意味着将 ASCII
  • 我可以向量化这个Python代码吗?

    我编写了这段 python 代码来获取标签的邻居 一组共享一些公共属性的像素 标签的邻居被定义为位于边界另一侧的其他标签 相邻标签共享边界 所以 我写的代码可以工作 但速度非常慢 segments It is a 2 dimensional
  • 删除 sourceSets.main.runtimeClasspath 中的 jar

    我的 gradle 中有这个 sourceSets main compileClasspath configurations provided runtimeClasspath configurations provided test co
  • 从选择框中删除重复条目

    我如何使用 jQuery 删除重复项
  • 如何制作在 iOS 上的 VLC 中播放的音乐文件的 URL?

    我想通过我的网站向 iPhone 和 iPad 用户提供 MP3 和其他文件格式 VLC 的 iOS 应用程序似乎符合要求 但他们说 Additionally third party websites and apps may includ
  • 从 VBA 项目中删除密码

    如何以编程方式从 Excel VBA 项目中删除 已知 密码 需要明确的是 我想从 VBA 项目中删除密码 而不是从工作簿或任何工作表中删除密码 删除 VBA 项目密码的另一种方法是 使用十六进制编辑器打开 xls 文件 即十六进制编辑ht
  • 如何调试 Captive Portal 中的浏览器?

    强制门户有一个浏览器 当您尝试连接到无线网络时 该浏览器有时会打开 有谁知道我该如何调试它 我已经尝试过的 我尝试运行模拟器 但模拟器无法打开门户 我尝试过将 iPhone 连接到我的 Mac 并使用 Safari 开发进行调试 但这仅在
  • 如何在雪豹上安装gem pg

    我需要在雪豹上安装 gem pg 因为我正在 Rails 代码库上运行 rake 我没有使用 postgres 这是我收到的错误 sudo gem install pg Password Sorry try again Password B
  • 自动映射器有什么用?

    What s 自动映射器 http www codeplex com AutoMapper for 它将如何帮助我处理域和控制器层 asp net mvc 也许一个例子会有所帮助 假设您有一个很好标准化的数据库模式 如下所示 Orders