gpt4 book ai didi

c# - EF 5 查找分析器

转载 作者:行者123 更新时间:2023-11-30 21:03:27 27 4
gpt4 key购买 nike

我将 EF 5 用于我的项目,并使用 EntityProfiler 对它进行分析,我看到当我使用 Find 进行查询时生成的 sql 是:

SELECT TOP (2) [Extent1].[ID]                  AS [ID],
[Extent1].[TargetID] AS [TargetID],
[Extent1].[BranchID] AS [BranchID],
[Extent1].[ApplicationStatus] AS [ApplicationStatus],
[Extent1].[UserID] AS [UserID],
[Extent1].[AssignedOfficer] AS [AssignedOfficer],
[Extent1].[AssignedOfficerCRM] AS [AssignedOfficerCRM],
[Extent1].[RegistrationDate] AS [RegistrationDate],
[Extent1].[DecisionReasons] AS [DecisionReasons],
[Extent1].[DecisionExceptionID] AS [DecisionExceptionID],
[Extent1].[RiskComment] AS [RiskComment],
[Extent1].[CESInformed] AS [CESInformed],
[Extent1].[IsCommited] AS [IsCommited]
FROM [dbo].[Applications] AS [Extent1]
WHERE [Extent1].[ID] = '900100' /* @p0 */

调用的代码是:

 public T GetByID(object primaryKey)
{
return DB.Set<T>().Find(primaryKey);
}

所以我的问题是为什么在生成的sql中是Select Top (2)

最佳答案

它执行 Select Top (2) 导致 DBSet 在内部使用 SingleOrDefault()(参见 here 方法 FindInStore)Find 方法执行查询。

这确保了,如果返回 2 个结果,则抛出异常,因为 SingleOrDefault 定义它只期望一个结果或什么都没有。

Select Top (1) 在您使用 FirstOrDefault() 时生成为 Sql。

关于c# - EF 5 查找分析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12858350/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com