我正在尝试使用dotConnect for Oracle在Mono上运行EntityFramework 6。 我还在userSettings部分中定义了所有应用程序配置。
我注意到的第一件事是我的应用程序始终默认配置,然后我尝试让Devart.Data.Oracle提供程序工作,但我收到错误:
System.Configuration.ConfigurationErrorsException: Failed to find or load the registered .Net Framework Data Provider 'Devart.Data.Oracle'.
我使用 strace 并使用MONO_LOG_LEVEL检查了我的应用:
MONO_LOG_LEVEL=debug mono Host.exe | grep config
在app启动期间,配置文件已成功加载(成功)。
我发现很少有关于单声道配置的错误报告,但它们已经很老了,我不知道是否仍然是实际的。
https://bugzilla.xamarin.com/buglist.cgi?quicksearch=ApplicationSettingsBase+
你能否给我一个提示如何摆脱App.config中的提供程序部分? 我已设法将几乎所有配置移动到代码(提供商除外)。
答案 0 :(得分:0)
首先,您的例外与配置错误无关。它加载并读取您的配置,但是它找不到该配置中指定的提供程序(Devart.Data.Oracle)。最明显的原因是缺少包含该提供程序的dll。
其次,这就是我在没有任何配置文件的单声道上使用EF6 + Devart的postgresql提供程序(你使用Oracle,但应该类似)的方法:
public class PgSqlConfiguration : System.Data.Entity.DbConfiguration
{
public PgSqlConfiguration()
{
SetProviderServices("Devart.Data.PostgreSql", PgSqlEntityProviderServices.Instance);
SetProviderFactory("Devart.Data.PostgreSql", PgSqlProviderFactory.Instance);
}
}
然后使用DbConfigurationType属性标记您的上下文:
[DbConfigurationType(typeof(PgSqlConfiguration))]
public partial class YourContext : DbContext {}
在上面的代码中用Oracle替换PostgreSql提供程序(如果是这样的话,不要忘记添加丢失的dll),你应该没问题。