【发布时间】:2016-12-26 17:02:08
【问题描述】:
我需要在对象之间进行一些映射(例如,PersonModel 到 PersonViewModel),并且正在研究不同的方法来做到这一点。具体来说,我正在使用实体框架并尝试将生成的模型映射到视图模型。
但是,我还没有找到一篇文章或资源来汇编如何执行此操作的列表。到目前为止,我遇到了以下情况:
- 隐式转换(我认为这是最基本的方法?因为您手动将属性从一个对象映射到另一个对象,它简单但乏味)
- 扩展方法(尚未使用此功能)
- 反射(我做了一些修改,但只管理了非常基本的映射)
- Automapper(非常流行,但我无法让它与 EF 一起正常工作)
- Value Injecter(尚未使用此功能)
- Emit Mapper(尚未使用此功能,但可能无法使其与 EF 一起使用?)
能否请您指出并详细说明那里可用的方法,以及每种方法的优缺点?例如,我看到一些提到 Automapper 比手动映射慢?或者可能,指出一篇解决这个问题的文章?
编辑:因为有些人可能会问我对 AutoMapper 有什么问题,请参阅:Automapper: How to map IList to EntityCollection
【问题讨论】:
-
您询问的是整篇文章甚至一本书的章节。 SO 是一个问答网站。 Automapper 使用 EF 没有问题,主要是因为 EF 返回的对象是普通对象。如果您使用 EF 特定的类,例如
EntityCollection,那么您做错了。查看所有教程,您会发现他们使用的是最基本的ICollection<T> -
你也可以Explicit Casting
标签: c# .net orm object-object-mapping