App.config(或ApplicationName.exe.config)在单声道中工作吗?
Does App.config (or ApplicationName.exe.config) work in mono?
我正在尝试使用在 Mono 上工作的 dotConnect for Oracle 获得 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
并且配置文件在应用程序启动期间被(成功)加载了几次。
我发现了一些关于单声道配置的错误报告,但它们已经很老了,我不知道是否仍然存在。
https://bugzilla.xamarin.com/buglist.cgi?quicksearch=ApplicationSettingsBase+
你能告诉我如何去掉 App.config 中的提供商部分吗?
我已经设法将几乎所有配置转移到代码中(提供商除外)。
首先,您的异常与配置错误无关。它加载并读取了您的配置,但随后找不到该配置中指定的提供程序 (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 {}
只需将上面代码中的 PostgreSql 提供程序替换为 Oracle(如果是这种情况,不要忘记添加缺少的 dll),您应该没问题。
我正在尝试使用在 Mono 上工作的 dotConnect for Oracle 获得 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
并且配置文件在应用程序启动期间被(成功)加载了几次。
我发现了一些关于单声道配置的错误报告,但它们已经很老了,我不知道是否仍然存在。
https://bugzilla.xamarin.com/buglist.cgi?quicksearch=ApplicationSettingsBase+
你能告诉我如何去掉 App.config 中的提供商部分吗? 我已经设法将几乎所有配置转移到代码中(提供商除外)。
首先,您的异常与配置错误无关。它加载并读取了您的配置,但随后找不到该配置中指定的提供程序 (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 {}
只需将上面代码中的 PostgreSql 提供程序替换为 Oracle(如果是这种情况,不要忘记添加缺少的 dll),您应该没问题。