1

我们有 SqlDataReader 作为源。我们可以使用具有自定义键的 Automapper 将其与 Dictionary 进行映射吗?

详情如下,

  • SqlDataReader ==> dr(oMessage,oError) ==> dr 包含此返回项
  • 字典 ==> 字典<“消息”,来自 oMessage 博士的值>
  • 字典 ==> 字典<“错误”,来自 dr oError 的值>
4

2 回答 2

0

创建 AutoMapper 是为了从一种类型映射到另一种表示。您的场景不是经典的映射场景,因为您想从特定的 DataReader 中提取值并将它们存储在 Dictionary 中。如果是关于映射,那么无论 SqlDataReader 实例访问哪些数据,您都会或多或少地将任何 SqlDataReader 实例映射到 Dictionary 中。
使用 AutoMapper 的一大优势是减少了 80% 的映射场景所需的代码量。它是一个灵活的框架,因此您可以配置 Mapper 以支持您的场景。但是,实现这一点所需的代码量至少与您在不使用 AutoMapper 的情况下以经典方式实现从 SqlDataReader 中的数据到字典的转换时所需的代码量相同。此外,经典方法更容易阅读和理解,因为转换并没有隐藏在许多 AutoMapper 配置后面。
因此,我建议采用经典方法。

于 2013-11-13T12:58:10.677 回答
0

这是很有可能的。我使用 AutoMapper 来包装 AX Business Connector,它的行为与 Data Reader 非常相似——您可以在此处查看完整的实现,包括一个 IQueryable 提供程序。如果您去掉 IQueryable 的东西,只专注于 ClassMapping、SessionFactory 和 Session 类,您可以修改此代码以推出字典。

不过,我建议考虑使用 MicroORM 来完成这项任务。

于 2013-11-13T13:05:09.577 回答