Я пытаюсь интегрировать MvcMiniProfiler в мой проект asp.net mvc + entity framewok.В первый раз все в порядке, но он вызывает исключение при других запросах.
Мой проектMVC 3Entity Framework 4.1 (DatabaseFirst + POCO Generator DbContext)MvcMiniProfiler.dll 1.9.0.0MvcMiniProfiler.EntityFramework.dll 1.9.1.0Я устанавливаю MvcMiniProfiler из Nu-Get
Добавлен ниже в global.asax
protected void Application_BeginRequest()
{
if (Request.IsLocal)
{
MvcMiniProfiler.MiniProfiler.Start();
MiniProfilerEF.Initialize();
}
}
Добавлен ниже в web.config
<system.data>
<DbProviderFactories>
<remove invariant="MvcMiniProfiler.Data.ProfiledDbProvider" />
<add name="MvcMiniProfiler.Data.ProfiledDbProvider" invariant="MvcMiniProfiler.Data.ProfiledDbProvider" description="MvcMiniProfiler.Data.ProfiledDbProvider" type="MvcMiniProfiler.Data.ProfiledDbProviderFactory, MvcMiniProfiler, Version=1.8.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" />
</DbProviderFactories>
</system.data>
Я получаю это исключение
System.InvalidCastException was unhandled by user code
Message=Unable to cast object of type 'MvcMiniProfiler.Data.EFProfiledDbConnection' to type 'System.Data.SqlClient.SqlConnection'.
Source=System.Data
StackTrace:
at System.Data.SqlClient.SqlCommand.set_DbConnection(DbConnection value)
at System.Data.Common.DbCommand.set_Connection(DbConnection value)
at MvcMiniProfiler.Data.ProfiledDbCommand.set_DbConnection(DbConnection value) in C:\Users\sam\Desktop\mvc-mini-profiler\MvcMiniProfiler\Data\ProfiledDbCommand.cs:line 118
at System.Data.Common.DbCommand.set_Connection(DbConnection value)
at System.Data.Common.Utils.CommandHelper.SetStoreProviderCommandState(EntityCommand entityCommand, EntityTransaction entityTransaction, DbCommand storeProviderCommand)
at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
at System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues)
Исключение происходит в вызовах EF
ModaEntitiesWrapper.GetInstance().Articles
.AsNoTracking()
.Where(p => p.StatusId == 1).ToList();
Если я изменяю версию MvcMiniProfiler.Data.ProfiledDbProvider в Web.Config с 1.8.0.0 до 1.9.0.0, возникает новый тип исключения в вызове MiniProfilerEF.Initialize ().
System.IndexOutOfRangeException was unhandled by user code
Message=The given DataRow is not in the current DataRowCollection.
Source=System.Data
StackTrace:
at System.Data.DataRowCollection.Remove(DataRow row)
at MvcMiniProfiler.MiniProfilerEF.Initialize()