在某些情况下,需要从我们的存储库中返回复合 DTO,其中 DTO 仅具有一些模型属性,并且 DTO 的功能只是作为一个简单的复合对象(返回 Queryable 是不够的,因为比 T 有更多的信息)
例如:
模型:
public class Job
{
int Id { get; set; }
//more properties
}
public class JobApplication
{
int Id { get; set; }
//more properties
}
存储库
IQueryable<JobAndUserApplication> GetJobAndMatchingUserApplication(int userId)
::
public class JobAndUserApplication
{
public Job Job { get; set; }
public JobApplication JobApplication { get; set; }
}
现在 - 我想简单地做(Project 和 To 是 Automapper 功能):
//this allows one efficient query to bring in the subproperties of the composite DTO
var jobVmList = jobRepository.GetAllJobsAndMatchingJobApplicationByUser(userId)
.Project()
.To<JobVM>()
.ToList();
所以我需要一种像这样的映射:
Mapper.CreateMap<JobAndUserApplication, JobVM>()
.ForMember(jvm => jvm, opt => opt.ResolveUsing(src => src.Job));
//many other .ForMembers that are not relevant right now
我正在尝试将 DTO 的 Job 属性直接映射到 JobVM(共享许多相同的属性)。
我的映射引发以下异常:
成员的自定义配置仅支持类型上的顶级个人成员。
我在做什么错,如何在 JobVM 本身上完成 DTO 的 Job 属性的映射?
谢谢