Sto cercando di integrare MvcMiniProfiler nel mio progetto framewok di asp.net mvc + entity. Tutto è ok per la prima richiesta web ma sta dando un'eccezione alle altre richieste.MvcMiniProfiler Impossibile eseguire il cast dell'oggetto di tipo EFProfiledDbConnection
Il mio progetto è
MVC 3
Entity Framework 4.1 (DatabaseFirst + POCO Generatore DbContext)
MvcMiniProfiler.dll 1.9.0.0
MvcMiniProfiler.EntityFramework.dll 1.9.1.0
installo MvcMiniProfiler dal Nu-get
Aggiunto di seguito per global.asax
protected void Application_BeginRequest()
{
if (Request.IsLocal)
{
MvcMiniProfiler.MiniProfiler.Start();
MiniProfilerEF.Initialize();
}
}
Aggiunto di seguito per 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>
sto ottenendo questa eccezione
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)
Eccezione è verificato in EF chiamate in
ModaEntitiesWrapper.GetInstance().Articles
.AsNoTracking()
.Where(p => p.StatusId == 1).ToList();
Se cambio versione di MvcMiniProfiler.Data.ProfiledDbProvider in Web.Config da 1,8 Da 0.0 a 1.9.0.0 Un nuovo tipo di eccezione si è verificato nella chiamata a 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 soluzione utile - appena risolto un bug minore nel vostro 'create' campione – BrokenGlass
ho provato la soluzione, ma ora sto ottenendo un'altra eccezione come qui di seguito System.NotSupportedException: Impossibile determinare il nome del provider per la connessione di tipo 'MvcMiniProfiler.Data.EFProfiledDbConnection'. System.Data.Entity.ModelConfiguration.Utilities.DbConnectionExtensions.GetProviderInvariantName (connessione DbConnection) 613.588 System.Data.Entity.ModelConfiguration.Utilities.DbConnectionExtensions.GetProviderInfo (DbConnection collegamento, DbProviderManifest & providerManifest) +57 System.Data.Entity. DbModelBuilder.Build (DbConnection providerConnection) +159 – Yucel
Hey Yucel, è necessario Entity Framework installato/referenziato nel progetto e aggiuntivo a MvcMiniProfiler: è necessario anche il pacchetto Entity Framework. EntityConnectionStringBuilder analizzerà la stringa di connessione di Entity Framework con metadati specifici di EF. Il ProviderConnectionString è quello a cui siamo abituati (nome, connectionString + provider). Internamente in ADO.NET esiste una fabbrica con provider registrati che crea un'istanza del provider corretto in base all'attributo del provider nella stringa di connessione. Ad esempio, le connessioni MSSQL normalmente utilizzano il provider SqlClient. – Shelakel