【发布时间】:2019-02-08 04:02:27
【问题描述】:
我的任务是管理一个使用 automapper 构建的 Web 应用程序,以完成所有数据转换。到目前为止,我已经设法解决了大多数问题,但目前我确实有一个令人困惑的问题。
在数据库中,我有一个名为 HasDocuments 的字段,它被定义为 bigInt。
此字段保存层次结构数据,但对于此视图模型,它用作一个标志,仅用于显示值是否存在。
所以我的 viewModel 有一个属性定义为可以为空的布尔值。
public bool? HasDocuments { get; set; }
到目前为止一切顺利。
当调用数据库时
我已经检查了所有要检查的映射器 cfg,但没有一个被调用,并且遇到了一些关于 SO 的精彩文章,例如:
AutoMapper ProjectTo() configuration question
从文章中我知道 ProjectTo 命令与 MapFrom 命令不同。
我只是不明白这里发生了什么。
有人可以帮忙吗?
更新
根据要求,以下是映射配置。
CreateMap<Parcel, BaseParcelDataContract>()
.BeforeMap((s, d) => { System.Diagnostics.Debug.Print("");})
.Include<Parcel, ParcelDataContract>();
Parcel 是基础 DB 对象,其 HasDocuments 属性为可为空的 long,BaseParcelDataContract 被传回控制器,其 HasDocuments 属性为可为空的 bool。
【问题讨论】:
-
请向我们展示您的 Automapper 配置。
-
我将编辑帖子的详细信息。
-
使用aftermap怎么样?
-
公平地说,BeforeMap 被复制为 AfterMap,我没有显示它的唯一原因是因为 BeforeMap 没有在我的断点上命中
-
见this。您必须自己使用 MapFrom、ConvertUsing 或其他任何适合您的方式进行转换。
标签: c# automapper