EF Core与EF6的查询复杂性

时间:2017-09-02 17:54:25

标签: entity-framework-core

我想询问实体框架核心团队,与EF6相比,他们的目标是查询翻译的范围/复杂性。

我已广泛使用EF6,我知道如果您可以在LINQ中表达它并且不使用任何不可翻译的功能,EF可能会正确翻译查询。

实体框架的翻译最终会是那么好,还是被认为是次要的,比如延迟加载功能。

如果是这样,关于最终的目标是什么,与EF6相比?

有一个ticket discussing GroupBy似乎表示他们认为对高级查询进行分组,但与EF6可以翻译的内容相比,正常的分组是非常平均的。

(我在这里要求EF Core团队在其网站上说它正在监控SO的问题。)

1 个答案:

答案 0 :(得分:1)

我们在EF Core中采用了一种截然不同的方法。每个LINQ查询都应该有效 - 即使您使用不可翻译的函数。我们通过将查询的部分转换为SQL并在服务器返回结果后处理客户端上的其余部分来完成此操作。随着EF Core的发展,我们会将越来越多的查询转换为SQL(例如GROUP BY),这可以提高效率。

理论上,我们的目标是翻译商店支持的所有内容。但是在某些情况下(特别是在NoSQL商店中),LINQ运算符根本没有翻译,我们觉得功能性和效率低于抛出更好。

如果要确保翻译整个查询,可以禁用客户端评估。这将导致它像EF6一样抛出。