c# - 无法映射字典dto 使用 AutoMapper
问题描述
我的数据模型和 dto 是-
public sealed class User
{
public long UserId { get; set; }
public string FullName { get; set; }
public Dictionary<string, string> References { get; set; }
public string Token { get; set; }
}
public sealed class ReferenceDto
{
public string Type { get; set; }
public string Id { get; set; }
}
public sealed class UserReferenceDto
{
public long UserId { get; set; }
public IEnumerable<ReferenceDto> References { get; set; }
public string Token { get; set; }
}
我正在使用 AutoMapper nuget 版本 8.1.1。我已经创建了个人资料地图 -
public sealed class UserProfile : Profile //AutoMapper.Profile
{
public UserProfile()
{
CreateMap<ReferenceDto, KeyValuePair<string, string>>()
.ConstructUsing(x => new KeyValuePair<string, string>(x.Type.Trim(), x.Id.Trim()));
CreateMap<KeyValuePair<string, string>, ReferenceDto>()
.ConstructUsing(x => new ReferenceDto { Type = x.Key.Trim(), Id = x.Value.Trim() });
CreateMap<User, UserReferenceDto>(); // Not working
}
}
我能够实现映射
var references = _mapper.Map<IEnumerable<ReferenceDto>>(User.References)
但是当我尝试将用户模型映射到 UserReferenceDto
var response = _mapper.Map<UserReferenceDto>(User);
我正在获取 UserId 和 Token 映射但为 ReferenceDto 获取空集合。尝试了几种方法,但仍然得到空集合。
马上
var response = _mapper.Map<UserReferenceDto>(User);
response.References = _mapper.Map<IEnumerable<ReferenceDto>>(User.References);
为我工作,但我只想完成这项工作_mapper.Map<UserReferenceDto>(User);
。
解决方案
推荐阅读
- javascript - 使用 ORM 从现有数据库将数据库实体迁移到节点 js 应用程序
- wordpress - 在 woocommerce 的移动视图中每行显示 1 个产品
- html - 我该如何做到这一点,以便当有人按下提交时,表格会清除?
- vim - vim 中的标准文本(非代码特定)文件类型
- c# - Visual Studio 2019 v16.6 无法构建 .net5 控制台应用程序并引发错误:.NETFramework,Version=v5.0 were not found
- html - Django taggit 应用程序不工作。用于过滤的标签名称未呈现
- c - 我应该使用带有 GTK+ 的 C 中的线程来为后门创建 GUI 控制器吗?
- angular-cli - Angular Schematics:在库中运行单元测试时出错
- c# - 如何在 wpf 中实现 XIPattern 枚举
- spring-boot - java.lang.ClassNotFoundException: org.apache.jute.OutputArchive 与最新的 spring-kafka 和 spring-kafka-test 2.5.2