Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用automapper映射对象时出现问题_C#_Entity Framework_.net Core_Automapper_Dto - Fatal编程技术网

C# 使用automapper映射对象时出现问题

C# 使用automapper映射对象时出现问题,c#,entity-framework,.net-core,automapper,dto,C#,Entity Framework,.net Core,Automapper,Dto,我对映射有问题。这是我的型号 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;

我对映射有问题。这是我的型号

    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));
CreateMap()
.FormMember(p=>p.作者,
opt=>opt.MapFrom(src=>src.User.KnownAs));
RepositoryContext

 public async Task<IEnumerable<Post>> GetPosts() {
             var posts = _context.Posts
            .Include(u => u.User)
            .OrderByDescending(p => p.Created)
            .ToListAsync();

            return await posts;
        }
public异步任务GetPosts(){
var posts=\u context.posts
.包括(u=>u.User)
.OrderByDescending(p=>p.Created)
.ToListAsync();
返回等待岗位;
}
在后控制器中处于调试模式时,我收到以下信息,其中包含用户对象

我试图将KnownAs属性从用户对象映射到我的DTO,但没有成功。 错误是:

AutoMapper.AutoMappingException:缺少类型映射配置或映射不受支持。 映射类型: 列表
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_方法(闭包,列表'1,PostForReturnDto,ResolutionContext) at lambda_方法(闭包、对象、对象、ResolutionContext)
在C:\projects\AutoMapper\src\AutoMapper\Mapper.cs中的AutoMapper.Mapper.Map[tdestation](对象源):第35行

似乎您正在映射
列表
而不是像它应该映射的
Post
实例

试试下面这样

var posts=wait_repo.GetPosts();
var res=posts.Select(=>_mapper.Map());
返回Ok(res);
或者可以将具有泛型参数的集合映射为

IEnumerable postToReturn=mapper.Map(posts);

UPD似乎您的
GetPosts()
实现缺少一些
Where
Take
过滤器。它现在占用了所有的帖子,如果有很多帖子,可能会导致制作中的性能问题。

这是否回答了您的问题?是的,我现在有一个单独的方法来处理所有用户的所有帖子,但稍后,我会添加一些过滤器。
IEnumerable<PostToReturn> postToReturn= mapper.Map<IEnumerable<Post>, IEnumerable<PostToReturn>>(posts);