2

经过数小时的 MiniProfiler 努力使其对数据库查询进行分析后,我没有运气,并且出现错误:

在“StackExchange.Profiling.Data.ProfiledDbConnection”类型的存储提供程序实例上调用“get_ProviderFactory”方法后返回 null。商店提供程序可能无法正常运行。

我浏览了许多 SO 帖子,但到目前为止没有任何效果,就像这篇帖子一样,错误相同,但配置不同,而且没有答案。现在我知道这ProfiledDbConnection不是压倒一切DbProviderFactory的,它的父类DbConnection在它的实现中返回 nullDbProviderFactory所以错误是可以预料的,但它应该以某种方式工作。有一个MiniProfilerEF.Initialize()但它似乎只能用于 CodeFirst,我正在使用 DatabaseFirst 方法。

我已经安装了 MiniProfiler、MiniProfiler.EF、MiniProfilerMVC3 nuget 包。这是我的代码:

        string connectionString = ConfigurationManager.ConnectionStrings["SqlConnection"].ConnectionString;
        var sqlConnection = new SqlConnection(connectionString);
        var profiled = new ProfiledDbConnection(sqlConnection, MiniProfiler.Current);
        var db = new DbContext(profiled, true);
        db.Set<Customer>().ToList();

我正在使用 asp.net mvc4、EF5、DatabseFirst、MiniProfiler 2.1.0.0、Sql Server

任何想法?

4

1 回答 1

3

因此,根据您对 EF-db- 的 mvc-mini-profiler 设置的评论,您是否尝试过删除 Mini Profiler 特定的包装器?

var profiled = new ProfiledDbConnection(sqlConnection, MiniProfiler.Current);
var db = new DbContext(profiled, true);
db.Set<Customer>().ToList();

相反,只需添加

protected void Application_Start()
{
    // any other code
    MiniProfilerEF.Initialize();
}

然后做标准的数据库访问?

using (var db = new WordsEntities()) {
    var posts = db.Customer.Take(4);
    // more code
}
于 2013-10-05T14:04:50.727 回答