用于修改machine.config文件的API – ‘DbProviderFactories’部分每个配置文件只能出现一次
我最近在客户端计算机上遇到以下错误:
“DbProviderFactories”部分每个配置文件只能出现一次。
机器配置似乎包含重复的DbProviderFactories元素。
手动删除这个额外的元素可以解决问题,我们的软件可以运行。 但是,有人要求我们尝试通过忽略我们自己的app.config中的重复条目来解决这个问题。 这是因为许多客户端可能有同样的问题,我们无法修改每个人的配置文件。
我已经尝试在system.data部分中添加一个元素,希望覆盖machine.config中已有的内容。 但是,这不起作用。
例如
有没有办法以编程方式忽略重复的DbProviderFactories元素?
是否存在允许您修改机器配置的API?
有人可以帮忙,或推荐一个解决方案?
亲切的问候
我最近在尝试将SqlServerCe与Entity Framework一起使用时遇到了同样的问题。
我已经设法通过使用Entity Framework 6中提供的基于代码的配置function来解决此问题。
您需要做的就是从app.config
删除
和
标记,并在项目中包含类似于以下内容的类:
using System.Data.Entity; using System.Data.Entity.Infrastructure; using System.Data.Entity.SqlServerCompact; using System.Data.SqlServerCe; namespace Data { public class DatabaseConfiguration : DbConfiguration { public DatabaseConfiguration() { SetExecutionStrategy("System.Data.SqlServerCe.4.0", () => new DefaultExecutionStrategy()); SetProviderFactory("System.Data.SqlServerCe.4.0", new SqlCeProviderFactory()); SetProviderServices("System.Data.SqlServerCe.4.0", SqlCeProviderServices.Instance); } } }
然后,entity framework会自动为您选择并使用它。 需要注意的一点是, app.config
中的配置将覆盖此类中出现的任何内容。
此外,如果您不想在数据层中包含此类,请参阅此处的“移动DbConfiguration”部分。
我遇到了同样的问题,似乎是由IBM DB2驱动程序引起的。
我不认为你可以忽略重复的条目:你的应用程序不会引发错误,它是由.NET框架引发的,它在读取它时无法validationmachine.config
。
由于validation失败且未加载配置,因此无法通过任何类型的API对其进行操作。
最好的方法是编写一个简单的控制台应用程序,该应用程序不使用任何数据提供程序,并通过纯XML操作解析和修复配置文件。 如果我没记错,只有使用数据提供程序的应用程序会触发exception,所以你应该能够做到这一点; 如果没有,请告诉我,以便我可以更新anser。
正如@Albireo所提到的,问题是由安装IBM iAccess for Windows – 特别是.NET Provider for DB2组件引起的。 我在V7R1中亲眼看过它,但是其他人在V6R1中引用了同样的问题。
IBM意识到了这个问题,并在其中一个服务版本中进行了修复。
从V7R1 服务发布文档 :
针对APAR SE45767的问题描述:
在未知情况下,安装.Net数据提供程序时(作为完整或自定义安装类型的一部分),会发生对machine.config XML文件的损坏。 腐败被隔离到与DbProviderFactories相关的部分XML数据 – 并且通常被观察到包括XML数据的某些行的重复。
APAR SE45767的修正:
将提供一个预防性修复程序,它将消除machine.config损坏的可能原因。
将不提供更新已损坏的machine.config文件的更正修复程序。 如果可能,请使用记录在案的本地修复或规避。
APAR SE45767的注意事项:
如果不需要.Net数据提供程序,则可以通过执行自定义安装并确保不安装.Net Data提供程序来避免此问题。 如果需要.Net提供者,则不知道规避。 利用本地修复程序解决问题。
上述就是C#学习教程:用于修改machine.config文件的API – ‘DbProviderFactories’部分每个配置文件只能出现一次分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/942911.html