管道和过滤器和CompiledQuery.Compile

时间:2009-09-16 01:32:59

标签: .net linq-to-sql entity-framework iqueryable linq.compiledquery

我已经开始使用linq到sql和实体框架,并且发现开发经验相当不错。就像您可以分开查询并组合不同查询的方式相当不错 - 请参阅管道和过滤器。

但是我发现的问题是,如果我使用编译查询,性能可以大大提高(在我的情况下,大约4倍,我不能忽略)。但是我在编译的quires中发现的问题是他们不喜欢使用IQueryable ......

有没有人对如何解决这个缺点有任何想法?我工作的方式是编译查询刚刚引用了使用IQueryable的其他查询,这样我可以切换进出使用已编译的quires。但正如我发现的那样,这种方法效果不佳。

有什么想法吗?

干杯 安东尼

1 个答案:

答案 0 :(得分:1)

不,您无法使用另一个IQueryable撰写CompiledQuery的结果。请记住,CompiledQuery的唯一目的是将IQueryable转换为Entity Framework规范命令树的结果。如果你可以用另一个IQueryable组合它,那么它需要重新编译才能执行,这完全违背了CompiledQuery的目的。