我有一个Post类,其中包含一个User属性。当我尝试获取所有帖子时,我还希望将User映射到UserDto对象。
public class Post {
public Guid Id {get; set;}
public string Content {get;set;}
public User User {get; set;}
}
var result = await _ctx.Posts.Include(u => u.User.Adapt<UserDto>()).ToListAsync()在Include内部进行调整会引发以下错误:
包含中使用的
Lambda表达式是无效的
发布于 2020-06-08 10:31:31
您似乎混淆了Include,因为Entity Framework和Mapster都有这个功能。您向我们展示的Include属于Entity Framework:https://learn.microsoft.com/en-us/ef/core/querying/related-data#eager-loading
因此,首先需要使用Include检索数据,如下所示:
var result = await _ctx.Posts.Include(u => u.User).ToListAsync();另一方面,您需要设置mapster配置:
TypeAdapterConfig<Post, PostDto>.NewConfig()
.PreserveReference(true);
TypeAdapterConfig<User, UserDto>.NewConfig()
.PreserveReference(true);参见Mapster中的嵌套映射:
https://github.com/MapsterMapper/Mapster/wiki/Config-for-nested-mapping
因此,您可以获得PostDto,其中包括UserDto
var postDto = result.Adapt<PostDto>();https://stackoverflow.com/questions/62254162
复制相似问题