跟踪从实体框架代码调用的查询

Posted

技术标签:

【中文标题】跟踪从实体框架代码调用的查询【英文标题】:Track down queries called from Entity Framework code 【发布时间】:2021-05-07 15:55:08 【问题描述】:

实体框架中是否有办法跟踪或确定在代码中从何处调用临时查询?此查询来自 SQL Server 中的 Activity Monitor,但是我不知道它在我们的代码中来自哪里,我们有大量的调用。有没有办法轻松解决这个问题?

SELECT 
    CASE WHEN ( EXISTS (SELECT 
        1 AS [C1]
        FROM [Test].[DT] AS [Extent1]
        WHERE  EXISTS (SELECT 
            1 AS [C1]
            FROM  [Test].[D] AS [Extent2]
            INNER JOIN [Test].[ME] AS [Extent3] ON [Extent2].[EId] = [Extent3].[EId]
            WHERE ([Extent1].[DId] = [Extent2].[Id]) AND ([Extent3].[MId] = @p__linq__0)
        )
    )) THEN cast(1 as bit) ELSE cast(0 as bit) END AS [C1]
    FROM  ( SELECT 1 AS X ) AS [SingleRowTable1]

【问题讨论】:

***.com/q/41414784/861716 【参考方案1】:

对于 EF Core,这是添加 Query Tags 功能的原因,或者您始终可以使用 logging。对于 EF6,您可以使用 logging and interception。

【讨论】:

很棒,但这不是 EF 核心

以上是关于跟踪从实体框架代码调用的查询的主要内容,如果未能解决你的问题,请参考以下文章

首先在实体框架模型中关闭跟踪

实体框架条目更改跟踪问题

实体框架查询性能

如何强制实体框架始终从数据库中获取更新数据?

EF Core性能优化

如何使用trackerenableddbcontext在asp.net mvc5和代码中的实体框架中实现审计跟踪