Entity framework 实体框架只支持标量类型

Entity framework 实体框架只支持标量类型,entity-framework,linq-to-entities,entity-framework-4,Entity Framework,Linq To Entities,Entity Framework 4,我有一个要预编译的查询,但是该查询是在已经存在的ObjectQuery上执行的,如下所示:- ObjectQuery<Books> books = _ctx.Books.Include("Authors"); books = books.Where(book=>book.Vendor.Listing.Select(vend=>vend.Price > 200)); 其中,GetVendorFilter是一个已编译的查询 是否有其他方法可以编译此查询?有人知道EF

我有一个要预编译的查询,但是该查询是在已经存在的ObjectQuery上执行的,如下所示:-

ObjectQuery<Books> books = _ctx.Books.Include("Authors");

books = books.Where(book=>book.Vendor.Listing.Select(vend=>vend.Price > 200));
其中,GetVendorFilter是一个已编译的查询


是否有其他方法可以编译此查询?有人知道EF4是否有这个限制吗?

我的理解是,编译后的查询基本上预先构建了查询表达式的SQL语句,但没有定义参数值。因为SQL不支持使用另一个查询作为参数,所以我认为您不能这样做是有道理的

对于预编译查询,需要注意的一点是,当您对它们执行任何操作时,它们就变成了“另一个查询”,在您对其求值时必须重新编译。因此,即使在最后调用
.Take(10)
,也会丢失预编译查询的值

由于您的
books
查询几乎是固定的,因此为这个特定场景创建单独的预编译查询应该很容易

var results = QueryCache.GetVendorFilter.Invoke(context,books);