c# - 使用自动映射器映射对象的问题
问题描述
我的映射有问题。这是我的模型。
public class Post
{
public int Id { get; set; }
public string Description { get; set; }
public DateTime Created { get; set; }
public User User { get; set; }
public int UserId { get; set; }
}
我的 Dto:
public class PostForReturnDto
{
public PostForReturnDto()
{
Created = DateTime.Now;
}
public int Id { get; set; }
public string Description { get; set; }
public DateTime Created { get; set; }
public string Author { get; set; }
}
AutoMapperProfiles.cs
CreateMap<Post, PostForReturnDto>()
.ForMember(p => p.Author,
opt => opt.MapFrom(src => src.User.KnownAs));
存储库上下文
public async Task<IEnumerable<Post>> GetPosts() {
var posts = _context.Posts
.Include(u => u.User)
.OrderByDescending(p => p.Created)
.ToListAsync();
return await posts;
}
在 PostController 中处于调试模式时,我收到以下信息,其中包含用户对象。
我正在尝试将 KnownAs 属性从 User 对象映射到我的 DTO,但没有成功。错误是:
AutoMapper.AutoMapperMappingException:缺少类型映射配置或不支持的映射。映射类型:List 1 -> PostForReturnDto
System.Collections.Generic.List
1[[DateApp.API.Models.Post, DateApp.API, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] -> DateApp.API.Dtos.PostForReturnDto at lambda_method(Closure , List` 1 , PostForReturnDto , ResolutionContext ) at lambda_method(Closure , Object , Object , ResolutionContext ) at AutoMapper.Mapper.Map[Tdestination](Object source) in C:\projects\automapper\src\AutoMapper\Mapper.cs:line 35
解决方案
似乎您正在映射的List<Post>
不是Post
应有的实例
尝试如下
var posts = await _repo.GetPosts();
var res = posts.Select(_ => _mapper.Map<PostToReturn>(_));
return Ok(res);
或者您可以映射具有通用参数的集合,如文档所述
IEnumerable<PostToReturn> postToReturn= mapper.Map<IEnumerable<Post>, IEnumerable<PostToReturn>>(posts);
UPD 似乎您的GetPosts()
实现缺少一些Where
或Take
过滤器。它现在需要所有帖子,如果有很多帖子,可能会导致生产中的性能问题。
推荐阅读
- javascript - I'd like to keep unchanged value of a field but the datebase made it to ""
- javascript - 何时在 react.js 中使用构造函数
- javascript - 如何将一个.js文件中的类导入另一个
- list - 项目符号列表的自定义颜色方案/语法?可打印?
- android - Quickblox 错误,远程/本地视频轨道未在 QBRTCSurfaceView 中呈现
- node.js - 在node.js中使用readline模块,我如何问一定数量的问题,但在收到上一个答案之前不问下一个问题
- python - 选项卡完成在 jupyter 笔记本中不起作用
- javascript - IsAnagram,为什么 - 97?- Javascript
- javascript - jQuery UI 自动完成不能在移动 chrome 上模糊
- apache - 从 apache2 迁移到 nginx:服务器发送事件问题