使用 MvcMiniProfiler 分析实体框架

发布于 2024-11-17 04:48:22 字数 714 浏览 5 评论 0原文

我有一个 Asp.net Mvc 3 应用程序,现在正在使用 MvcMiniProfiler。我还使用实体框架来访问我的数据库,并且我希望使探查器能够使用实体模型。到目前为止,我已经创建了下面的 Context 工厂:

internal class ProfiledContextFactory : IContextFactory
{
    public ModelContainer GetContext()
    {
        var conn = ProfiledDbConnection.Get(GetConnection());
        return ObjectContextUtils.CreateObjectContext<ModelContainer>(conn);
    }

    private static EntityConnection GetConnection()
    {
        return new EntityConnection(ConfigurationManager.ConnectionStrings["ModelContainer"].ConnectionString);
    }
}

当我运行上面的代码时(当我启动工作单元时由我的存储库层调用),在 MvcMiniProfiler.ProfiledDbServices 类中调用 CreateDbCommandDefinition 时,它会陷入无限循环。

有什么线索我做错了吗?

I've got an Asp.net Mvc 3 Application which is now using the MvcMiniProfiler. I'm also using the Entity Framework to access my database, and I'd like to enable the profiler to work with the entity model. So far I've created the Context factory below:

internal class ProfiledContextFactory : IContextFactory
{
    public ModelContainer GetContext()
    {
        var conn = ProfiledDbConnection.Get(GetConnection());
        return ObjectContextUtils.CreateObjectContext<ModelContainer>(conn);
    }

    private static EntityConnection GetConnection()
    {
        return new EntityConnection(ConfigurationManager.ConnectionStrings["ModelContainer"].ConnectionString);
    }
}

When I run the above code, which is called by my repository layer when I start a unit of work, it gets stuck in an infite loop when calling CreateDbCommandDefinition in the MvcMiniProfiler.ProfiledDbServices class.

Any clues what I'm doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

撩起发的微风 2024-11-24 04:48:23

问题是我的 GetConnection 返回的是 EntityConnection,而不是 EntityConnection 中的 SqlConnection。我现在修改了我的代码,使其显示为:

private static SqlConnection GetConnection()
{
    var connStr = ConfigurationManager.ConnectionStrings["ModelContainer"].ConnectionString;
    var entityConnStr = new EntityConnectionStringBuilder(connStr);
    return new SqlConnection(entityConnStr.ProviderConnectionString);
}

并且它工作正常。

我在查看这个问题时发现了这一点: 使用 mvc-使用 EF 4.0 和 Ninject 的迷你分析器

The problem was my GetConnection was returning the EntityConnection, not the SqlConnection within the EntityConnection. I've now modified my code so that it reads:

private static SqlConnection GetConnection()
{
    var connStr = ConfigurationManager.ConnectionStrings["ModelContainer"].ConnectionString;
    var entityConnStr = new EntityConnectionStringBuilder(connStr);
    return new SqlConnection(entityConnStr.ProviderConnectionString);
}

And it works fine.

I discovered this while looking at this question: Using mvc-mini-profiler with EF 4.0 and Ninject

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文