c# - AutoMapper 无法转换简单的 DTO

标签 c# automapper

当前正在处理一些遗留代码,从手动构建的 DTO 更改为使用 Automapper。一切都很顺利,直到我来到这个相对简单的类(class):

public class JobRoleCompanyTypeDto
{
    public int Id { get; set; }
    public string Description { get; set; }
    public string ResourceDescription { get; set; }
}

我们使用本地化,并且某些字符串需要翻译,因此我将其添加到自动映射器配置中,就像我对其他此类属性所做的那样:

cfg.CreateMap<JobRoleCompanyType, JobRoleCompanyTypeDto>()
   .ForMember(dto => dto.Description, opt => opt.MapFrom(jrc => jrc.Description.Translate()));  

但是当我真正来测试它时:

JobRoleCompanyType testJrc = _context.JobRoleCompanyTypes.First();
var mappedJrc = Mapper.Map<JobRoleCompanyTypeDto, JobRoleCompanyType>(testJrc);

它拒绝编译,给出错误

cannot convert from 'MyNamespace.Entity.Model.JobRoleCompanyType' to 'MyNamespace.DAL.Model.JobRoleCompanyTypeDto'

我已经用这种方式映射了很多其他类型,所以我很困惑为什么这个不起作用。毫无疑问,我错过了一些愚蠢而简单的东西,但我看不到它是什么?

最佳答案

您混淆了源类型和目标类型之间的顺序,请尝试以下操作:

var mappedJrc = Mapper.Map<JobRoleCompanyType,JobRoleCompanyTypeDto>(testJrc);

您还可以使用另一个接受 object 参数作为输入并完全省略源类型的重载:

var mappedJrc = Mapper.Map<JobRoleCompanyTypeDto>(testJrc);

关于c# - AutoMapper 无法转换简单的 DTO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54477127/

相关文章:

c# - 如何更改隐藏字段的名称属性?

C# ADO.NET 插入具有默认值的新行

c# - 如何使用 Entity Framework 自动过滤掉软删除的实体?

c# - 有什么方法可以禁用 AutoMapper 的异常包装吗?

c# - 在 AxAcroPDF 中隐藏 pdf 工具栏

c# XML 序列化 : Order of namespace declarations

asp.net-mvc - 使用 AutoMapper 将对象展平为 int

c# - 如何在.Net core 2.0 控制台应用程序中将 AutoMapper 添加到 DI

c# - 您可以使用自动映射器对所有未映射的属性执行特定操作吗?

c# - 从 DataTable 映射到属性名称不同于列名称的自定义模型