考虑博客数据模型:
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,重复实体内的所有成员,这很烦人! 如果没有,我如何在这里管理嵌套映射?