IObjectSet включает ошибки метода расширения с помощью CompiledQuery - PullRequest
1 голос
/ 17 апреля 2010

В моем классе Custom ObjectContext мои коллекции сущностей выставлены как IObjectSet, поэтому они могут быть проверены модулем. Я столкнулся с проблемой, когда я использую этот ObjectContext в скомпилированном запросе и вызываю метод расширения «Включить» (из блога Джулии Лерман http://thedatafarm.com/blog/data-access/agile-entity-framework-4-repository-part-5-iobjectset/):

    public IQueryable<MyPocoObject> RunQuery(MyCustomContext context, int theId)
    {
        var query = CompiledQuery.Compile<MyCustomContext, int, IQueryable<MyPocoObject>>(
             (ctx, id) => ctx.MyPocoObjects.Include("IncludedPocoObject").Where(n => n.IncludedPocoObject.id == id));

        return query(context, theId);
    }

LINQ to Entities не распознает метод 'System.Linq.IQueryable 1[MyPocoObject] Include[MyIncludedPocoObject](System.Linq.IQueryable 1 [MyPocoObject], System.String)', и этот метод нельзя преобразовать в выражение хранилища.

Если я использую этот же запрос в коллекциях ObjectSet, а не в IObjectSet, он работает нормально. Если я просто запускаю этот запрос без предварительной компиляции, он работает нормально. Что мне здесь не хватает?

1 Ответ

0 голосов
/ 13 августа 2010

Я уверен, что я просто неправильно понял, поскольку вы, кажется, некоторое время рассматривали это - но не следует ли включать ObjectSet, а не объект, который запрашивается этим набором объектов.

например:

var query = CompiledQuery.Compile<MyCustomContext, int, IQueryable<MyPocoObject>>(
     (ctx, id) => ctx.MyPocoObjects.Include("IncludedPocoObjectSET").Where(n => n.IncludedPocoObject.id == id));

Можете ли вы также подтвердить, что выполнение одного и того же запроса без компиляции не приводит к исключению "not translate"?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...