调用ODataQueryOptions.ApplyTo后Mutate IQueryable

时间:2014-05-12 12:17:00

标签: c# entity-framework left-join odata

我将OData查询传递给方法,但我需要对查询执行额外的连接以检索一些相关数据,因为我们希望在数据库的往返中获取所有这些数据。

        var products = query.ApplyTo(_repository.Query, ODataQuerySettings)
                         .Cast<Product>()
                         .ToList();

        // Ideally, this will be the only query that's run.
        var productImages = products.GroupJoin(_imageRepository.Query, p => p.ProductId, image => image.ProductId, (product, image) => new {
            Product = product,
            Image = image.DefaultIfEmpty()
        }).ToList();

        foreach (var item in productImages) {
            ...        
        }

这有效,但是正在进行两次查询。似乎ApplyTo针对数据库执行查询,而不仅仅是为您提供可变的IQueryable。如果我从第一个查询中删除ToList()调用,则会抛出异常。

有没有办法做到这一点?

0 个答案:

没有答案