entity-framework - EF Core 中的 & 和 && 有什么区别
问题描述
我知道 && 会使评估短路,因此如果不需要,它就不必评估 RHS,但是 EF 呢?& 和 && 之间有什么区别(| 和 || 相同)?性能方面!
解决方案
但是EF呢?& 和 && 之间有什么区别(| 和 || 相同)?性能方面!
就在这里。
首先,有时 EF Core 使用客户端评估,因此不能短路。
其次,即使在使用服务器评估时,EF Core 也会以不同的方式翻译它们。例如,这里是 SqlServer 的翻译:
LINQ SQL
============== ============
expr1 && expr2 expr1 AND expr2
expr1 & expr2 (expr1 & expr2) = 1
这是否影响性能取决于数据库查询优化器,但第一个看起来通常更好。并且一些对类型没有原生支持的数据库提供程序bool
可能会生成非常低效的翻译,甚至无法翻译&
/|
谓词。
简而言之,最好始终在 LINQ 查询中使用逻辑&&
和运算符。||
推荐阅读
- javascript - 如何在嵌套映射函数中进行并发异步调用
- r - 在 R 中的“data.frame”上方创建标题
- bash - 尝试使用相对表达式返回文件名
- filter - 如何在 Wireshark 中过滤动态字段名称
- node.js - 使用 AWS 开发工具包的 Lambda 上的 AWS SAM AccessDeniedException
- r - 10个变量的不同组合但没有设置所需变量的数量
- csv - 应用程序不再出现在电子邮件共享菜单中以在 iOS13 中导入文件
- batch-file - 通过用户输入在 .bat 文件中传递多个参数并不能正确显示所有参数
- python - 重新启动程序后附加列表时删除泡菜数据
- ansible - 不能在剧本任务中使用 ansible 额外的变量值