Frage

Ich versuche, Miniprofiler dazu zu bringen, meinen Datenbankzugriff zu profilieren, aber ich stehe auf Probleme. Die ganze Hilfe, die ich sehe, scheint für "Code First" Entity Framework -Verbindungen zu sein. Mein Modell wurde entworfen, bevor das erste Update in diesem Jahr verfügbar war, und ich habe den Designer verwendet, um das EDMX -Modell zu erstellen. (Ich benutze das seit fast einem Jahr und es scheint für mich zu funktionieren)

Das Beispiel auf der Miniprofiler -Dokumentationsseite macht für mich keinen Sinn. Ich habe ein paar Variationen davon ausprobiert, aber ich habe Probleme.

Mein Modell heißt Cyentities, normalerweise, um einen ObjectContext zu instanziieren, mache ich das einfachvar context = new CYEntities() Folgendes habe ich für den Profiler versucht ...

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. 

Dies macht eine Ausnahme ...

System.ArgumentException: Der angeforderte .NET -Framework -Datenanbieter kann nicht gefunden werden. Es kann nicht installiert werden.

Ich bin mir nicht sicher, wohin ich von hier aus gehen soll.

War es hilfreich?

Lösung

Ich habe das gleiche Problem. Es scheint, dass Sie Ihrem Web.config für mich jedoch Folgendes hinzufügen müssen. Dies führt dazu, dass der W3WP.exe -Prozess (und den Webserver in Visual Studio, für lokale Anfragen) zum Absturz gebracht wird. Es scheint nicht etwas, was jemand anderem passiert, daher kann es für Sie funktionieren (stellen Sie sicher, dass Sie die tatsächliche Version des Profilers einfügen).

<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>

Andere Tipps

Versuchen Sie es wie folgt:

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top