如何使用 EntityFramework 获得 Effort?

How do I get Effort to work with EntityFramework?

概览
将 Fitnesse 与 EF6 一起使用,无法启动 Effort。 我已经尝试了我能找到的所有帖子中的所有技巧。
所有帖子都说要么调用 'RegisterProvider',要么添加一个配置部分。两者都不起作用。

到目前为止:
我在 machine.config 的 DbProviderFactories 部分有 "Effort.Provider"。 当我查看 DbProviderFactories.GetFactoryClasses(); 时,我出现了 Effort.Provider; ProcMon 显示它正在寻找并找到 Effort.dll.

结果:

中的任何一个
DbConnectionFactory.CreateTransient();   
Effort.EntityConnectionFactory.CreateTransient(connectionString);   
DbProviderFactory dataFactory = DbProviderFactories.GetFactory(dt.Rows[5]);   

投掷

Effort.Exceptions.EffortException: The Effort library failed to register

也尝试过:
"Effort.Provider" 在 Runner.exe.config 的 entityFramework 部分,但无法正常工作。刚刚崩溃了应用程序。
卸载 EF 和 Effort.EF6 并重新安装。无明显效果。
调用 Effort.Provider.EffortProviderConfiguration.RegisterProvider();来自 class 构造函数和各种启动位置。 Effort.Provider 从未出现在 DbProviderFactories.GetFactoryClasses();
"Effort.Provider" 在 app.config 的 DbProviderFactories 部分中,它与 machine.config 一样显示在 GetFactoryClasses 中。

使用:
Windows10
.Net 4.6
对比 2016
EF 6.1.2(尽管它说安装了 6.1.3,但不确定那是什么意思)

我需要注册一个DLL什么的吗?有关说明中没有任何内容。

更多详情:
App.config

<configuration>
    <runtime>
        <loadFromRemoteSources enabled="true"/>
    </runtime>
    <system.data>
        <DbProviderFactories>
            <add name="Effort.Provider" invariant="Effort.Provider" description="Effort.Provider" type="Effort.Provider.EffortProviderFactory, Effort" />
        </DbProviderFactories>
    </system.data>
</configuration>

您似乎需要在 app.config 文件中注册 "entityFramework" 配置部分。

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

然后在您的代码中创建 Effort 连接并将其传递给您的 DbContext。如果您还没有采用 System.Data.Common.DbConnection 类型对象的构造函数,请创建一个。

System.Data.Common.DbConnection connection = DbConnectionFactory.CreateTransient();
var context = new MyContext(connection);

我还建议在您的 app.config 中设置一个 connectionString。我相信对 CreateTransient 的调用会为您创建一个连接,但如果您的测试代码具有在某处创建另一个 dbContext 的代码,则 Effort 将查看 app.config 以获取该信息。下面是一个示例,它将创建一个临时数据库,以便在一个测试中完成的所有操作不会影响另一个测试。

<add name="DefaultConnection" connectionString="Data Source=in-process;IsTransient=true" providerName="Effort.Provider" />