使用MvcMiniProfiler分析实体框架

时间:2011-06-22 16:37:58

标签: asp.net-mvc asp.net-mvc-3 entity-framework mvc-mini-profiler

我有一个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时,它会陷入infite循环。

有什么线索我做错了吗?

1 个答案:

答案 0 :(得分:3)

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

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

它运作正常。

我在查看这个问题时发现了这一点:Using mvc-mini-profiler with EF 4.0 and Ninject