C# MiniProfiler、EntityFramework代码优先和后台任务参考

C# MiniProfiler、EntityFramework代码优先和后台任务参考,c#,asp.net-mvc,entity-framework,mvc-mini-profiler,C#,Asp.net Mvc,Entity Framework,Mvc Mini Profiler,我在mvc3项目中首先使用EF4.2代码 miniprofiler工作正常(sql+mvc),但我遇到了异步任务的问题 我是这样执行的(这个方法行吗?我对这个新的DatabaseContext()感到有点不舒服) 在第一次操作期间抛出EXCEPTION,db处于操作(consistantUser)中 以下是跟踪: 在C:\Users\sam\Desktop\mvc mini profiler\MvcMiniProfiler\MiniProfiler.cs中的MvcMiniProfiler.Min

我在mvc3项目中首先使用EF4.2代码

miniprofiler工作正常(sql+mvc),但我遇到了异步任务的问题

我是这样执行的(这个方法行吗?我对这个
新的DatabaseContext()
感到有点不舒服)

在第一次操作期间抛出EXCEPTION,db处于
操作(consistantUser)中
以下是跟踪:

在C:\Users\sam\Desktop\mvc mini profiler\MvcMiniProfiler\MiniProfiler.cs中的MvcMiniProfiler.MiniProfiler.AddSqlTiming(SqlTiming stats):第274行 在C:\Users\sam\Desktop\mvc mini profiler\MvcMiniProfiler\SqlTiming..ctor(DbCommand命令,ExecuteType,MiniProfiler profiler)中的MvcMiniProfiler.SqlTiming..ctor(DbCommand命令,ExecuteType,MiniProfiler profiler)处:第137行 在C:\Users\sam\Desktop\mvc mini profiler\MvcMiniProfiler\SqlProfiler.ExecuteStartImpl(DbCommand命令,ExecuteType)中的MvcMiniProfiler.SqlProfiler.ExecuteStartImpl中:第39行 在C:\Users\sam\Desktop\mvc mini profiler\MvcMiniProfiler\SqlProfiler.cs中的MvcMiniProfiler.SqlProfiler.ExecuteStart(SqlProfiler-SqlProfiler,DbCommand-command,ExecuteType)处:第93行 在C:\Users\sam\Desktop\mvc MiniProfiler\MvcMiniProfiler\MiniProfiler.IDbProfiler.ExecuteStart中的MvcMiniProfiler.MiniProfiler.Data.IDbProfiler.ExecuteStart(DbCommand profiledDbCommand,ExecuteType ExecuteType ExecuteType):第14行 在C:\Users\sam\Desktop\mvc mini profiler\MvcMiniProfiler\Data\ProfiledDbCommand.ExecuteDbDataReader(CommandBehavior)中的MvcMiniProfiler.Data.ProfiledDbCommand.ExecuteDbDataReader(CommandBehavior):第158行 位于System.Data.Common.DbCommand.ExecuteReader(CommandBehavior) 位于System.Data.EntityClient.EntityCommandDefinition.ExecuteStorommands(EntityCommand EntityCommand,CommandBehavior)

我做错了什么? 任何帮助都将不胜感激

编辑:我尝试在执行后台任务的线程中再次初始化MiniProfiler(
MiniProfilerEF.initialize();
),现在出现另一个异常:

无法将“MvcMiniProfiler.Data.EFProfiledDbConnection”类型的对象强制转换为“System.Data.SqlClient.SqlConnection”类型


事实上,没有必要在后台线程中分析查询,但它会使整个线程崩溃,因此应用程序无法正常工作,我必须禁用整个分析程序。有没有办法对后台线程禁用它以防止它崩溃?

当它试图访问您的连接字符串时,代码会中断,因为该连接字符串是实体框架样式的连接字符串

EntityConnection connection = 
    new EntityConnection(ConfigurationManager
                   .ConnectionStrings["ConnectionStringName"].ConnectionString));

string connectionString = connection.StoreConnection.ConnectionString;
将连接字符串传递到迷你探查器时,必须从EF连接字符串中提取实际的连接字符串

EntityConnection connection = 
    new EntityConnection(ConfigurationManager
                   .ConnectionStrings["ConnectionStringName"].ConnectionString));

string connectionString = connection.StoreConnection.ConnectionString;

实际的异常是什么?您是否验证了没有将null传递给这些函数中的任何一个?当然。同样精确的代码在没有探查器的情况下也能工作(没有在ApplicationStart中调用)。@bryancrossby,“那些函数”是什么意思?我使用SO团队提供的MiniProfiler,我不会向MvcMiniProfiler命名空间中的函数传递任何内容,因为我不会显式调用它们。请注意您的
数据库上下文
:您最好使用
将其包装到
中。
EntityConnection connection = 
    new EntityConnection(ConfigurationManager
                   .ConnectionStrings["ConnectionStringName"].ConnectionString));

string connectionString = connection.StoreConnection.ConnectionString;