- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我在 .NET 4.5 上使用 WPF 和 C# 将 Entity Framework 和 System.Data.SQLite 用于我的应用程序在我的机器上运行良好,但在测试机器上,当我通过 EntityFramework 访问 sqlite 数据库时收到此错误:
The 'DbProviderFactories' section can only appear once per config file.
我发现错误是在测试机中,在machine.config中:
<system.data>
<DbProviderFactories>
<add name="IBM DB2 for i5/OS .NET Provider" invariant="IBM.Data.DB2.iSeries" description=".NET Framework Data Provider for i5/OS" type="IBM.Data.DB2.iSeries.iDB2Factory, IBM.Data.DB2.iSeries, Version=12.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26"/>
<add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
<add name="IBM DB2 for i .NET Provider" invariant="IBM.Data.DB2.iSeries" description=".NET Framework Data Provider for IBM i" type="IBM.Data.DB2.iSeries.iDB2Factory, IBM.Data.DB2.iSeries, Version=12.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26" />
</DbProviderFactories>
<!-- This is the line to remove - empty element -->
<DbProviderFactories/>
</system.data>
我删除了最后一个空元素,现在一切正常了。我认为这与 IBM.Data.DB2.iSeries 安装(IBM 客户端访问)有关。
我的问题是:如何在不手动编辑 machine.config 的情况下删除空元素?我试图插入标签 <clear />
在 app.config 文件中但不起作用。
我发现了另一个与我类似的问题,但没有人建议如何在不手动编辑 machine.config 的情况下解决问题。
这是我的 app.config 文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<system.xml.serialization>
<xmlSerializer useLegacySerializerGeneration="true" />
</system.xml.serialization>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
<!--STAI MOLTO ATTENTO-->
<legacyUnhandledExceptionPolicy enabled="1"/>
</startup>
<connectionStrings>
<add name="db" connectionString="Data Source=clients.db;Version=3;New=False;Compress=True;" />
<add name="icmdbEntities" connectionString="metadata=res://*/MainModel.csdl|res://*/MainModel.ssdl|res://*/MainModel.msl;provider=System.Data.SQLite;provider connection string="data source=.\icmdb.db"" providerName="System.Data.EntityClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
<system.data>
<DbProviderFactories>
<clear />
<remove invariant="System.Data.SQLite" />
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
</system.data>
<appSettings>
<add key="ditta" value="default" />
<add key="demo" value="true"/>
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
</providers>
</roleManager>
</system.web>
</configuration>
最佳答案
我今天遇到了这个问题。
machine.config
文件位于:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\machine.config
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config
machine.config
的损坏版本包含:
<system.data>
<DbProviderFactories>
<add name="IBM DB2 for i .NET Provider" invariant="IBM.Data.DB2.iSeries" description=".NET Framework Data Provider for IBM i" type="IBM.Data.DB2.iSeries.iDB2Factory, IBM.Data.DB2.iSeries, Version=12.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26" />
</DbProviderFactories>
<DbProviderFactories/>
</system.data>
安装 iSeries 驱动程序损坏了以下 machine.config
文件:
| Framework | Platform | Factory Added? | Corrupted Machine.config? |
|-----------|----------|----------------|---------------------------|
|v4.0.30319 | x64 | Yes | Yes |
|v4.0.30319 | x86 | Yes | Yes |
|v2.0.50727 | x86 | No | No |
|v2.0.50727 | x64 | No | No |
很高兴您只需要担心 IBM 损坏一半的 machine.config
文件;以及那些仅使用 .NET 4 的应用程序。
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config
(好的)C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
(好的)C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\machine.config
(腐败)C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config
(腐败)从提升权限的记事本中,打开这两个文件,并删除多余的空白 <DbProviderFactories/>
元素,留给你:
<system.data>
<DbProviderFactories>
<add name="IBM DB2 for i .NET Provider" invariant="IBM.Data.DB2.iSeries" description=".NET Framework Data Provider for IBM i" type="IBM.Data.DB2.iSeries.iDB2Factory, IBM.Data.DB2.iSeries, Version=12.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26" />
</DbProviderFactories>
</system.data>
然后你就修好了。
关于c# - SQLite 错误 : The 'DbProviderFactories' section can only appear once per config file (IBM Client Access),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23754055/
我对单元测试比较陌生,对模拟完全陌生。我有一个数据库类,它包装了 DbProvider 工厂,我想在不连接到数据库的情况下为其创建单元测试。 我如何模拟 DbProvider 工厂,以便我可以将它传递
我的电脑上安装了 C#、Framework 4.5 和 MySqL 连接器 如果我尝试过 using MySql.Data.MySqlClient; ... MySqlConnection tst =
(配置:VS 2015社区,Windows 10 64位,.Net 4.6.1) 有一次我安装了 Npgsql Data Provider .Net Data Provider for Postgre
我正在重构一些基于 DbProviderFactory 的旧代码利用连接池,但我遇到了一个简单的问题: DbProviderFactories.GetFactory() 返回的对象是线程安全? 现在的
我在使用 dotnet 框架 4 的 VB.NET 类库中的 Visual Studio 2010 SP1 中使用 MySQL .Net 连接器版本 6.3.6。MySql.Data 是使用 NuGe
我有一个项目正在尝试从 SQL Server 移植到 PostgreSQL。除了我无法让 DbProviderFactory 与 Npgsql 一起工作之外,我几乎已经完成了我认为的所有事情。 Fac
对于下面的方法,我想传入 DbProviderFactories 类的模拟,但不能,因为它是一个静态类: private DbConnection GetConnection() {
我将 .NET MySQL Connector 与 Entity Framework 4 一起使用,一切都运行良好,但我想在服务器上部署时将 MySQL 客户端 DLL 文件与我的应用程序打包在一起,
我有一个需要 DbProviderFactory 的 .net 核心库作为依赖传递到服务中。在可预见的 future 它应该是 SQL Server,所以我想我可以做这样的事情: services.A
我实现了一个自定义的 DbProviderFactory,它返回了 SqlX 类型,除了我将以下逻辑添加到 CreateCommand public override DbCommand Create
我在使用 RavenDB 3.5 SQL 复制到 MySQL 服务器时遇到问题。我使用的是 Windows 10、RavenDB 3.5 和 MySQL 8.0.12。我尝试过回归基础,没有 SSL,
我需要让 DbProviderFactories.GetFactory() 返回 Sqlite 的提供程序。但是,我通过 NuGet 将 Sqlite 添加到我的项目中,并希望避免将其放入 GAC 并
根据 MSDN .NET 4 中有 GetFactory(DbConnection) 的重载。但是,我无法调用它 - 在编译时失败说: error BC30518: Overload resoluti
我想使用 DbProvider 类来构造一个通用 DAL 组件。这在不同的数据库提供者之间切换时会很方便。在安装了 Oracle 2.2 的机器上,当尝试列出机器上所有可用的数据库提供程序时,未列出
我在我的数据层(基于 Entity Framework )中使用 DbProviderFactories 并在我的数据库中使用 SQLite,但我不需要 App.Config 来拥有以下代码:
我最近在客户端机器上遇到了以下错误: “DbProviderFactories”部分在每个配置文件中只能出现一次。 机器配置似乎包含重复的 DbProviderFactories 元素。
当我在 ADO.Net 中实例化一个 SqlConnection 对象时,这段代码会导致执行相应的 DbProviderFactory 代码吗?所以当 block 2 中的代码被执行时,我们实际上最终
如何将 ADO.NET DbProviderFactory 与 MySQL 一起使用? 最佳答案 首先,您必须安装 MySQL .Net Connector . MySQL Provider 工厂具有
我在两个 .net 框架的 machine.config 文件中修复了此问题,但我仍然遇到相同的错误,谢谢。 最佳答案 如果您打开 SSMS (Sql Server Management Studio
我正在尝试让 EF6 基于代码的配置与 .NET 4.0 中的 SQLite 一起使用。在我的目标应用程序中 App.config是自动生成的,因此编辑非常痛苦。最初,当通过 NuGet 将 EF6
我是一名优秀的程序员,十分优秀!