这是Automapper专业人士的问题。我已经尝试了几天的查询映射 - 并且没有运气。似乎Automapper并不打算以我想要的方式使用它。但也许我错了。所以这是问题......
我有这样的课程:
我想在我的数据访问层中编写一个通用读取函数,如下所示:
IEnumerable<CatDto> Read(IQueryable<CatDto> query) {
// here "query" is converted
// to Entity Framework query by means of AutoMapper,
// EF query gets executed,
// I convert EF entities (Cat) back to CatDto - this is not essential
// result is returned
}
我将以不同的方式调用此函数。例如:
var q = new ObjectModel.Collection(Of CatDto)).AsQueryable();
q = q.Where(c => c.Toys.Count() > 1);
var someResultVar = Read(q);
到目前为止,任何实现此类行为的尝试都失败了。我想知道Automapper是否是这里的帮手,还是我完全错了?
答案 0 :(得分:2)
我相信您想要的功能在UseAsDataSource
您无法映射IQueryable,但您不需要使用UseAsDataSource 实施例
IQueryable<CatDto> someResultVar = new ObjectModel.Collection(Of CatDto)).AsQueryable().UseAsDataSource().For(Of OrderLineDTO).Where(c => c.Toys.Count() > 1);
当你枚举它会将Lambda从CatDto转换为CatEf并调用ProjectTo<CatDto>
并返回CatDto对象