首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >能否将IQueryable<CatDTO>映射到IQueryable<CatEf>?

能否将IQueryable<CatDTO>映射到IQueryable<CatEf>?
EN

Stack Overflow用户
提问于 2016-06-22 10:39:28
回答 1查看 5.6K关注 0票数 5

这是一个自动化专业人员的问题。我已经试着做了几天的查询映射-没有运气。看起来Automapper并不打算以我想要的方式使用。但也许我错了。所以问题是..。

我有这样的课程:

  • CatDto (名称、年龄、玩具( ToyDto对象集合))
  • ToyDto (CatName,ToyName,Cat (父CatDto对象))
  • Cat (来自实体框架,具有类似于CatDto中的属性)
  • 玩具(来自实体框架,具有类似于ToyDto中的属性)

我想在我的数据访问层中编写一个通用的读取函数,如下所示:

代码语言:javascript
复制
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
}

我会用不同的方式称呼这一功能。示例:

代码语言:javascript
复制
var q = new ObjectModel.Collection(Of CatDto)).AsQueryable();
q = q.Where(c => c.Toys.Count() > 1);
var someResultVar = Read(q);

到目前为止,任何实现此类行为的尝试都失败了。我想知道Automapper是这里的助手还是我完全走错了路?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-23 16:36:35

我相信你想要的功能是在UseAsDataSource

您不能映射IQueryable,但不需要使用UseAsDataSource示例

代码语言:javascript
复制
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对象

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37965593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档