ОБЗОР
При использовании Fitnesse с EF6 не удается запустить приложение Effort. Я испробовал каждый трюк во всех сообщениях, которые смог найти.
Во всех сообщениях говорится либо вызвать «RegisterProvider», либо добавить раздел конфигурации. Ни один из них не работает.
На данный момент:
У меня есть "Effort.Provider" в разделе DbProviderFactories в файле machine.config. У меня появляется Effort.Provider, когда я смотрю на DbProviderFactories.GetFactoryClasses(); 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" в разделе entityFramework файла Runner.exe.config, но не смог заставить его работать. Просто произошел сбой приложения.
Удаление EF и Effort.EF6 и повторная установка. Нет видимого эффекта.
Вызов Effort.Provider.EffortProviderConfiguration.RegisterProvider(); из конструктора класса и различных мест запуска. Effort.Provider никогда не появлялся в DbProviderFactory.GetFactoryClasses();
Поскольку «Effort.Provider» находится в разделе DbProviderFactories в app.config, он отображается в GetFactoryClasses так же, как и machine.config.
Использование:
Windows 10
.Net 4.6
VS 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>