Pregunta

Estoy tratando de hacer que Miniprofiler perfile mi acceso a la base de datos, pero me estoy encontrando con problemas. Toda la ayuda que veo parece ser para las conexiones de "Code First" Framework Entity. Mi modelo fue diseñado antes de que la primera actualización del código estuviera disponible este año y utilicé el diseñador para crear el modelo EDMX. (He estado usando esto durante casi un año y parece estar funcionando para mí)

El ejemplo en el sitio de documentación de Miniprofiler no tiene sentido para mí. He probado algunas variaciones, pero tengo problemas.

Mi modelo se llama cyentities, normalmente para instanciar un objectContext, solo hago estovar context = new CYEntities() Esto es lo que he probado para el perfilador ...

var dbConnection = new CYEntities().Connection;
var profiledConnection = ProfiledDbConnection.Get(dbConnection);
var context = profiledConnection.CreateObjectContext<CYEntities>(); // this is the context I'd finally use to access data. 

Esto arroja una excepción ...

System.argumentException: No se puede encontrar el proveedor de datos de marco .NET solicitado. No se puede instalar.

No estoy seguro de a dónde ir desde aquí.

¿Fue útil?

Solución

Tengo el mismo problema. Parece que debe agregar lo siguiente a su web. No parece algo que le esté sucediendo a nadie más, por lo que podría funcionar para usted (asegúrese de insertar la versión real del perfilador que está utilizando).

<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.7.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" />
  </DbProviderFactories>
</system.data>

Otros consejos

Intenta así:

var connectionString = ConfigurationManager
    .ConnectionStrings["MyConnectionString"]
    .ConnectionString;
var ecsb = new EntityConnectionStringBuilder(connectionString);
var sqlConn = new SqlConnection(ecsb.ProviderConnectionString);
var pConn = ProfiledDbConnection.Get(sqlConn, MiniProfiler.Current);
var context = ObjectContextUtils.CreateObjectContext<CYEntities>(pConn);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top