Estoy tratando de integrar MvcMiniProfiler a mi asp.net mvc + entity framewok project. Todo está bien para la primera solicitud web, pero está dando excepción en las otras solicitudes.MvcMiniProfiler No se puede convertir el objeto de tipo EFProfiledDbConnection
Mi proyecto es
MVC 3
Entity Framework 4.1 (DatabaseFirst + POCO Generador DbContext)
MvcMiniProfiler.dll 1.9.0.0
MvcMiniProfiler.EntityFramework.dll 1.9.1.0
instalo MvcMiniProfiler de Nu-Get
Añadido abajo para Global.asax
protected void Application_BeginRequest()
{
if (Request.IsLocal)
{
MvcMiniProfiler.MiniProfiler.Start();
MiniProfilerEF.Initialize();
}
}
Añadido abajo para 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>
estoy recibiendo esta excepción
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)
excepción se produjo en EF llamadas
ModaEntitiesWrapper.GetInstance().Articles
.AsNoTracking()
.Where(p => p.StatusId == 1).ToList();
Si cambio de versión de MvcMiniProfiler.Data.ProfiledDbProvider en Web.Config de 1,8 .0.0 a 1.9.0.0 Se produjo un nuevo tipo de excepción en la llamada 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()
+1 respuesta útil - acaba de arreglar un error menor en su 'muestra create' – BrokenGlass
Probé su solución, pero ahora me estoy poniendo otra excepción, como a continuación System.NotSupportedException: No se puede determinar el nombre del proveedor para la conexión del tipo 'MvcMiniProfiler.Data.EFProfiledDbConnection'. System.Data.Entity.ModelConfiguration.Utilities.DbConnectionExtensions.GetProviderInvariantName (conexión DbConnection) 613588 System.Data.Entity.ModelConfiguration.Utilities.DbConnectionExtensions.GetProviderInfo (DbConnection conexión, DbProviderManifest y providerManifest) 57 System.Data.Entity. DbModelBuilder.Construir (DbConnection providerConnection) 159 – Yucel
Hey Yucel, necesita tener instalado Entity Framework/referencia en su proyecto y adicional a MvcMiniProfiler -usted también necesitan el paquete de Entity Framework. EntityConnectionStringBuilder analizará la cadena de conexión de Entity Framework con metadatos específicos de EF. ProviderConnectionString es a lo que estamos acostumbrados (nombre, proveedor de connectionString +). Internamente en ADO.NET hay una fábrica con proveedores registrados que instancia el proveedor correcto en función del atributo del proveedor en la cadena de conexión. Por ejemplo, las conexiones MSSQL normalmente usan el proveedor SqlClient. – Shelakel