EF Core两种FirstOrDefaultAsync查询写法的差异与性能对比咨询
EF Core两种FirstOrDefault查询写法的区别与性能对比
这两种查询写法在功能、性能上完全没有差异,最终EF Core生成的SQL语句是一模一样的。
具体原因:
FirstOrDefaultAsync(predicate)本质是EF Core提供的语法糖,内部实现等价于先调用Where(predicate)再调用无参数的FirstOrDefaultAsync()。- 你可以开启EF Core的SQL日志验证,会发现两者都会生成类似这样的SQL:
SELECT TOP(1) * FROM [Accounts] WHERE [AccountId] = @__account_AccountId_0
唯一的区别:
只是代码风格的偏好而已——有人喜欢直接在FirstOrDefault里写过滤条件,有人习惯先通过Where明确过滤逻辑再取第一条,完全看个人或团队的编码规范。
内容的提问来源于stack exchange,提问作者chuckd
相关产品推荐
相关产品推荐

