这是Automapper专业人士的一个问题。我已经尝试进行查询映射已有几天了,而且没有运气。似乎Automapper并非按我想使用的方式使用。但是也许我错了。所以这是一个问题...

我有这样的类(class):

  • CatDto(名称,年龄,玩具(ToyDto对象的集合))
  • ToyDto(CatName,ToyName,Cat(父级CatDto对象))
  • Cat(来自Entity Framework,具有类似于CatDto中的属性)
  • Toy(来自Entity Framework,具有类似于ToyDto中的属性)

  • 我想在我的数据访问层中编写一个通用的读取函数,如下所示:
    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是这里的助手还是我走错了路?

    最佳答案

    我相信您想要的功能在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对象

    关于c# - 是否可以将IQueryable <CatDTO>映射到IQueryable <CatEf>?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37965593/

    10-10 07:20