首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC-Mini-Profiler错误显示重复查询

MVC-Mini-Profiler错误显示重复查询
EN

Stack Overflow用户
提问于 2011-07-05 23:35:56
回答 1查看 1K关注 0票数 7

我一直在尝试使用MVC-Mini-Profiler,我发现它非常有用。但是,在我跟踪的所有页面上,我都会得到重复查询的报告,如下图所示。

但是,我在SQL Server事件探查器中跟踪了这些查询,毫无疑问,它只命中数据库一次。

我是不是遗漏了一个概念,还是我设置错了?我到处寻找有类似问题的人,但没有找到,所以我怀疑有没有bug。

代码语言:javascript
复制
http://localhost:27941/clubs
T+175.2 ms
Reader
13.6 ms
utePageHierarchy Execute System.Collections.Generic.IEnumerable<T>.GetEnumerator GetResults Execute ExecuteStoreCommands
SELECT 
[Extent1].[TeamId] AS [TeamId], 
[Extent1].[Title] AS [Title], 
[Extent1].[TitleShort] AS [TitleShort], 
[Extent1].[LogoImageId] AS [LogoImageId], 
[Extent1].[Slug] AS [Slug], 
(SELECT 
    COUNT(1) AS [A1]
    FROM [dbo].[Athletes] AS [Extent2]
    WHERE [Extent1].[TeamId] = [Extent2].[TeamId]) AS [C1]
FROM [dbo].[Teams] AS [Extent1]
WHERE 352 = [Extent1].[CountryId]

http://localhost:27941/clubs
T+175.4 ms
DUPLICATE Reader
13.4 ms
utePageHierarchy Execute System.Collections.Generic.IEnumerable<T>.GetEnumerator GetResults Execute ExecuteStoreCommands
SELECT 
[Extent1].[TeamId] AS [TeamId], 
[Extent1].[Title] AS [Title], 
[Extent1].[TitleShort] AS [TitleShort], 
[Extent1].[LogoImageId] AS [LogoImageId], 
[Extent1].[Slug] AS [Slug], 
(SELECT 
    COUNT(1) AS [A1]
    FROM [dbo].[Athletes] AS [Extent2]
    WHERE [Extent1].[TeamId] = [Extent2].[TeamId]) AS [C1]
FROM [dbo].[Teams] AS [Extent1]
WHERE 352 = [Extent1].[CountryId

我使用EF4,并实现了如下上下文:

代码语言:javascript
复制
public class BaseController : Controller
{
    public ResultsDBEntities _db; 

    public BaseController()
    {
        var rootconn = ProfiledDbConnection.Get(GetStoreConnection(ConfigurationManager.ConnectionStrings["ResultsDBEntities"].ConnectionString));
        var conn = ProfiledDbConnection.Get(rootconn);
        _db = ObjectContextUtils.CreateObjectContext<ResultsDBEntities>(conn);
    }

    public static DbConnection GetStoreConnection<T>() where T : System.Data.Objects.ObjectContext
    {
        return GetStoreConnection("name=" + typeof(T).Name);
    }

    public static DbConnection GetStoreConnection(string entityConnectionString)
    {
        DbConnection storeConnection;

        // Let entity framework do the heavy-lifting to create the connection.
        using (var connection = new EntityConnection(entityConnectionString))
        {
            // Steal the connection that EF created.
            storeConnection = connection.StoreConnection;

            // Make EF forget about the connection that we stole (HACK!)
            connection.GetType().GetField("_storeConnection",
                BindingFlags.NonPublic | BindingFlags.Instance).SetValue(connection, null);

            // Return our shiny, new connection.
            return storeConnection;
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-25 20:48:20

我将此报告给了Mini Profiler团队(http://code.google.com/p/mvc-mini-profiler/issues/detail?id=62&can=1),他们今天发布了一个补丁,似乎可以解决这个问题。

我想这将包含在下一个版本中。希望这能有所帮助:)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6585270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档