В моем классе 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, он работает нормально. Если я просто запускаю этот запрос без предварительной компиляции, он работает нормально. Что мне здесь не хватает?