我认为以下是一个好主意,在这种情况下,这里的人可能可以向我指出实现它的代码。或者是一个愚蠢的想法,在这种情况下,有人会解释原因并避免我浪费时间。
是否可以为我的每个实体框架查询创建一个容器,在第一次调用它时,查询将被编译并执行。然后在随后的时间里,它调用现在已经编译的查询?
最好是在使用它的方法中直接内联创建它,这样它在很大程度上是不可见的(使得制作查询类似于不使用此容器)?
LINQ 翻译内部如何工作:
标准行为:
编译查询行为:
这些算法之间的主要区别在于,编译的查询不会在缓存中搜索表达式树的现有翻译,而仅在字段中查找。根据缓存状态和表达式树复杂性,搜索缓存的成本可能很高 - 请参阅 ExpressionEqualityComparer 了解如何比较表达式。
这就是为什么编译查询更快。
您想要做的是复制标准行为,这需要再次搜索缓存。这在当前的 EF Core 实现中没有意义。