从DTO投影从实体派生的查询

时间:2017-12-07 10:54:16

标签: entity-framework automapper dto

考虑博客数据模型:

Blog: 
Id
Name
Posts

Posts: 
Id 
BlogId
Date
Blog

BlogDto: Blog
LastPostDate

PostDto: Post
BlogName   

DTO源自实体,因为所有属性都是共享的,而DTO只有一些额外的属性。此外,根据需要,定义了Automapper中的一些不同映射:

Post -> PostDto
PostDto -> Post
Post -> Post
PostDto -> PostDto

Blog -> Blog Dto
Blog Dto -> Blog 
Blog -> Blog 
Blog Dto -> Blog Dto

然后我想将Post中的查询投影到PostDto(使用AutoMapper.EF6),如下所示:

dbContext.Set<Post>
    .Include("Blog")
    .AsNoTracking()
    .ProjectToListAsync<PostDto>();

但是我遇到了这个错误:

"The entity or complex type 'Blog' cannot be constructed in a LINQ to Entities query".

如果我删除帖子,那么提示就是&gt;发布映射后,不会出现错误。我猜是因为AutoMapper尝试在投影中映射嵌套的PostDto.Blog导航属性。

我的方法是否错误(DTO继承自Entity)?如果是这样,我想最好的做法是定义DTO,重复实体内的所有成员,这很烦人! 如果没有,我如何在这里管理嵌套映射?

0 个答案:

没有答案