15

Tengo la versión 1.6 del MvcMiniProfiler referenciado (a través de Nuget) y he configurado todo como se describe en la página de inicio del proyecto en http://code.google.com/p/mvc-mini-profiler/.MvcMiniProfiler en EF 4.1 Proyecto Code-First no perfil SQL

tengo el siguiente código en el 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.6.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" /> 
    </DbProviderFactories> 
</system.data> 

(La página principal del proyecto tiene versión = 1.5.0.0 - el paquete NuGet ya se ha actualizado)

tengo el siguiente código en el Global.asax (y cadena de conexión también se define en Web.config):

protected void Application_Start() 
    { 
     Log.Info("ReCoupon has started."); 

     AreaRegistration.RegisterAllAreas(); 

     RegisterGlobalFilters(GlobalFilters.Filters); 
     RegisterRoutes(RouteTable.Routes); 

     var factory = new SqlConnectionFactory(ConfigurationManager.ConnectionStrings["ReCouponContext"].ConnectionString); 
     var profiled = new MvcMiniProfiler.Data.ProfiledDbConnectionFactory(factory); 
     Database.DefaultConnectionFactory = profiled; 

     Database.SetInitializer(new ReCouponContextInitializer()); 
    } 

el generador de perfiles funciona muy bien excepto que no puedo conseguirlo al perfil de SQL. Estoy usando SQL Server 2008 Express. He estado siguiendo los problemas relacionados en la página principal del proyecto Google Code y estoy totalmente atascado.

+0

Hey @ Sam azafrán, la solución a continuación funcionó - No lo entiendo del todo. Puedo darte acceso a mi repositorio bitbucket para que puedas verlo en acción si aún quieres. – rkaregaran

+0

Proporcione 1.9.1 una oportunidad. Finalmente tengo perfiles de SQL con EF ahora después de la actualización. – RyanW

Respuesta

7

Este me tuvo perplejo durante mucho tiempo también. Parece que la convención de nomenclatura de la cadena de conexión tiene prioridad sobre Database.DefaultConnectionFactory.

¿Podría intentar cambiar el nombre de la cadena de conexión en el archivo web.config?

de

<connectionStrings> 
     <add name="ReCouponContext" connectionString="..." /> 
    </connectionStrings> 

a

<connectionStrings> 
     <add name="ReCoupon" connectionString="..." /> 
    </connectionStrings> 

y luego cambiar

var factory = new SqlConnectionFactory(ConfigurationManager.ConnectionStrings["ReCouponContext"].ConnectionString); 

a

var factory = new SqlConnectionFactory(ConfigurationManager.ConnectionStrings["ReCoupon"].ConnectionString); 
+0

OMG - funcionó a las mil maravillas. No estoy seguro de entender lo que quieres decir con la convención de nombres teniendo prioridad? – rkaregaran

+0

El código EF primero buscará automáticamente las cadenas de conexión que reciben el mismo nombre que su clase de contexto. Si no encuentra uno, entonces buscará en Database.DefaultConnectionFactory. No estoy seguro de lo que se supone que debemos hacer si queremos crear más de una base de datos. –

+0

Ahh, sí, soy un idiota, entendí, me preguntaba cómo funcionaba mi contexto, porque ahora estamos configurando la conexión db predeterminada. Sí, no estoy seguro de la cosa multi-db tampoco. – rkaregaran

Cuestiones relacionadas