Wie bekomme ich Aufwand, um mit EntityFramework zu arbeiten?

c# effort entity-framework

Frage

ÜBERBLICK
Die Verwendung von Fitnesse mit EF6 kann den Start nicht beschleunigen. Ich habe jeden Trick in allen Posts ausprobiert, die ich finden kann.
Alle Beiträge sagen, entweder "RegisterProvider" aufzurufen oder einen Konfigurationsabschnitt hinzuzufügen. Keine funktioniert.

Bisher:
Ich habe "Aufwand.Provider" im Abschnitt DbProviderFactories in machine.config. Ich habe Effort.Provider angezeigt, wenn ich DbProviderFactories.GetFactoryClasses () betrachte; ProcMon zeigt, dass es nach Effort.dll sucht und findet.

Ergebnis:
Irgendein von

DbConnectionFactory.CreateTransient();   
Effort.EntityConnectionFactory.CreateTransient(connectionString);   
DbProviderFactory dataFactory = DbProviderFactories.GetFactory(dt.Rows[5]);   

werfen

DbConnectionFactory.CreateTransient();   
Effort.EntityConnectionFactory.CreateTransient(connectionString);   
DbProviderFactory dataFactory = DbProviderFactories.GetFactory(dt.Rows[5]);   

Auch versucht:
"Effort.Provider" im Abschnitt "EntityFramework" von "Runner.exe.config", konnte jedoch nicht zum Funktionieren gebracht werden. Gerade abgestürzt die App.
EF und Effort.EF6 deinstallieren und neu installieren. Kein sichtbarer Effekt.
Aufruf von Effort.Provider.EffortProviderConfiguration.RegisterProvider (); von einem Klassenkonstruktor und verschiedenen Startup-Standorten. Effort.Provider wurde nie in DbProviderFactories.GetFactoryClasses () angezeigt;
Mit "Effort.Provider" im Abschnitt DbProviderFactories in app.config wird es in GetFactoryClasses genauso wie in machine.config angezeigt.

Verwenden:
Windows 10
.Net 4.6
VS 2016
EF 6.1.2 (obwohl es 6.1.3 installiert ist, nicht sicher, was das bedeutet)

Muss ich eine DLL oder etwas registrieren? Nichts in den Anweisungen dazu.

Mehr Details:
App.config

DbConnectionFactory.CreateTransient();   
Effort.EntityConnectionFactory.CreateTransient(connectionString);   
DbProviderFactory dataFactory = DbProviderFactories.GetFactory(dt.Rows[5]);   

Beliebte Antwort

Offenbar müssen Sie den Konfigurationsabschnitt "entityFramework" in der Datei app.config registrieren.

<configSections>
   <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
 <entityFramework>
   <providers>
      <provider invariantName="Effort.Provider" type="Effort.Provider.EffortProviderServices,Effort" />
    </providers>
 </entityFramework>

Dann erstellen Sie in Ihrem Code die Effort-Verbindung und übergeben Sie diese an Ihren DbContext. Wenn Sie noch keinen Konstruktor haben, der ein Objekt vom Typ System.Data.Common.DbConnection akzeptiert, erstellen Sie einen.

<configSections>
   <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
 <entityFramework>
   <providers>
      <provider invariantName="Effort.Provider" type="Effort.Provider.EffortProviderServices,Effort" />
    </providers>
 </entityFramework>

Ich würde auch empfehlen, einen ConnectionString in Ihrer app.config zu setzen. Ich glaube, der Aufruf von CreateTransient stellt eine Verbindung für Sie her, aber wenn der zu testende Code über Code verfügt, der irgendwo einen anderen dbContext erstellt, sucht Effort in der app.config nach diesen Informationen. Im Folgenden finden Sie ein Beispiel, das eine temporäre Datenbank erstellt, sodass alle in einem Test ausgeführten Vorgänge keinen anderen Test beeinflussen.

<configSections>
   <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
 <entityFramework>
   <providers>
      <provider invariantName="Effort.Provider" type="Effort.Provider.EffortProviderServices,Effort" />
    </providers>
 </entityFramework>



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum