EF Core 5 可以翻译什么
What can EF Core 5 translate
我正在优化一个昂贵的查询,并且有预感问题的一部分是过早的客户端评估。我四处搜索,很难找到一个清晰的列表,列出可以转换为 EF Core 5 的 SQL 查询的内容。这些是我特别想知道的操作:
.Where(entity => listOfInts.Contains(entity.Id))
.Where(entity => entity.SomeStringProp.Contains("SomeSubsString")
.Where(entity => entity.SomeNullableProp.HasValue)
我不是 SQL 专家,但我可以想象这些是可以翻译的。我只是不知道 EF Core 5 是否像我希望的那样智能。任何指向这方面文档的指针都将受到赞赏。
EF Core 5 没有自动客户端评估(尽管 3 之前的 EF did) So unless you explicitly evaluate on client side (via AsEnumerable
or ToList
and their async counterparts) your query should be translated into SQL (with small exclusion of final projection)。
此外,由于您正在尝试计算查询的性能 - 请尝试检查由 EF 生成的 SQL。从 5.0 开始,您可以使用 EntityFrameworkQueryableExtensions.ToQuery
来查看它(并且取决于数据库 - 使用分析器或特定于数据库的 queries/logs)。
我正在优化一个昂贵的查询,并且有预感问题的一部分是过早的客户端评估。我四处搜索,很难找到一个清晰的列表,列出可以转换为 EF Core 5 的 SQL 查询的内容。这些是我特别想知道的操作:
.Where(entity => listOfInts.Contains(entity.Id))
.Where(entity => entity.SomeStringProp.Contains("SomeSubsString")
.Where(entity => entity.SomeNullableProp.HasValue)
我不是 SQL 专家,但我可以想象这些是可以翻译的。我只是不知道 EF Core 5 是否像我希望的那样智能。任何指向这方面文档的指针都将受到赞赏。
EF Core 5 没有自动客户端评估(尽管 3 之前的 EF did) So unless you explicitly evaluate on client side (via AsEnumerable
or ToList
and their async counterparts) your query should be translated into SQL (with small exclusion of final projection)。
此外,由于您正在尝试计算查询的性能 - 请尝试检查由 EF 生成的 SQL。从 5.0 开始,您可以使用 EntityFrameworkQueryableExtensions.ToQuery
来查看它(并且取决于数据库 - 使用分析器或特定于数据库的 queries/logs)。