Comment puis-je obtenir un effort pour travailler avec EntityFramework?

c# effort entity-framework

Question

Vue d'ensemble
L'utilisation de Fitnesse avec EF6 empêche l'effort de démarrer. J'ai essayé tous les trucs dans tous les posts que je peux trouver.
Tous les messages disent d'appeler 'RegisterProvider' ou d'ajouter une section de configuration. Ni travaille.

Jusque là:
J'ai "Effort.Provider" dans la section DbProviderFactories dans machine.config. J'ai Effort.Provider qui apparaît lorsque je regarde DbProviderFactories.GetFactoryClasses (); ProcMon indique qu'il recherche et trouve Effort.dll.

Résultat:
N'importe quel

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

jeter

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

Aussi essayé:
"Effort.Provider" dans la section entityFramework de Runner.exe.config mais n'a pas pu le faire fonctionner. Vient de crash l'application.
Désinstallez EF et Effort.EF6, puis réinstallez-les. Aucun effet visible.
Appel de Effort.Provider.EffortProviderConfiguration.RegisterProvider (); à partir d'un constructeur de classe et de divers emplacements de démarrage. Effort.Provider ne s'est jamais présenté dans DbProviderFactories.GetFactoryClasses ();
Avec "Effort.Provider" dans la section DbProviderFactories dans app.config, il apparaît dans GetFactoryClasses aussi bien que dans machine.config.

En utilisant:
Windows 10
.Net 4.6
VS 2016
EF 6.1.2 (bien que 6.1.3 soit installé, je ne sais pas ce que cela signifie)

Dois-je enregistrer une DLL ou quelque chose? Rien dans les instructions à ce sujet.

Plus de détails:
App.config

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

Réponse populaire

Il semble que vous deviez enregistrer la section de configuration "entityFramework" dans le fichier app.config.

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

Ensuite, dans votre code, créez la connexion Effort et transmettez-la à votre DbContext. Si vous ne disposez pas déjà d'un constructeur prenant un objet de type System.Data.Common.DbConnection, créez-en un.

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

Je recommanderais également la configuration d'un connectionString dans votre app.config. Je crois que l'appel à CreateTransient crée une connexion pour vous, mais si votre code testé a un code qui crée un autre dbContext quelque part, Effort se tournera vers app.config pour obtenir ces informations. Vous trouverez ci-dessous un exemple permettant de créer une base de données transitoire de sorte que toutes les opérations effectuées lors d'un test n'affectent pas un autre test.

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



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi