[英]How do I refactor compiled LINQ queries?
是否可以将已编译的LINQ重构为SQL查询? 假设我有一个具有某些逻辑的查询,并且我想在此基础上进行构建。 是否可以重用该查询?
例如,假设我有一个基本查询来获取活动项目:
Func<DataContext, IQueryable<Item>> GetActiveItems =
CompiledQuery.Compile((DataContext context) =>
context.Items.Where(item => item.IsActive));
我想在上面的表达式上建立另一个查询。 CompiledQuery
的文档表明,我无法在编译的委托的结果上应用另一个运算符。 那么,重构此类表达式的推荐方法是什么?
我认为我应该使用Expression
,但是应该如何使用它呢? 或者,还有更好的方法?
您可以使用PredicateBuilder之类的工具来帮助解决此问题:
Albahari平台很简单,而且效果很好,尽管很容易扩展或自己开发: http : //www.albahari.com/nutshell/predicatebuilder.aspx
显然,如果您的查询依赖于无法转换为SQL表达式的本地方法,则您必须重新考虑如何操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.