我有一个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循环。
有什么线索我做错了吗?
答案 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