我有一个项目,我试图从 SQL Server 移植到 PostgreSQL。除了我无法DbProviderFactory使用 Npgsql 之外,我相信我几乎已经完成了所有工作。
Factory = DbProviderFactories.GetFactory("Npgsql");
产量
未处理的异常:System.Configuration.ConfigurationErrorsException:找不到或加载已注册的 .Net Framework 数据提供程序。
我该如何解决?
我有一个项目,我试图从 SQL Server 移植到 PostgreSQL。除了我无法DbProviderFactory使用 Npgsql 之外,我相信我几乎已经完成了所有工作。
Factory = DbProviderFactories.GetFactory("Npgsql");
产量
未处理的异常:System.Configuration.ConfigurationErrorsException:找不到或加载已注册的 .Net Framework 数据提供程序。
我该如何解决?
尝试在你的 app.config 中定义一个工厂:
<system.data>
<DbProviderFactories>
<add name="Npgsql Data Provider" invariant="Npgsql"
description="Data Provider for PostgreSQL"
type="Npgsql.NpgsqlFactory, Npgsql" />
</DbProviderFactories>
</system.data>
通过http://fxjr.blogspot.pt/2013/06/npgsql-code-first-entity-framework-431.html
您是否阅读了精美手册中的第 3.4 节“将 Npgsql 与 ProviderFactory 一起使用” ?
type属性值在DbProviderFactories条目中很重要。
对我来说,版本号不正确。正确的版本是:
<system.data>
<DbProviderFactories>
<add name="Npgsql Data Provider"
invariant="Npgsql"
support="FF"
description=".Net Framework Data Provider for Postgresql Server"
type="Npgsql.NpgsqlFactory, Npgsql, Version=2.2.3.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" />
</DbProviderFactories>
</system.data>
您可以使用以下方法检索项目中的值:
typeof(Npgsql.NpgsqlFactory).AssemblyQualifiedName
这些是为我解决它的步骤:
(1) 将 DbFactory 提供程序添加到位于 .NET Microsoft Frameworking 文件夹中的 machine.config 文件中
(2) 使用gacutil在GAC中注册npgsql.dll和mono.security.dll
分步详细信息:
(1) 将 DbFactory 提供程序添加到 machine.config
一个。转到相关的 NET 框架配置目录(例如 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config)
湾。编辑 machine.config 文件并将以下行添加到 DbProviderFactories
<DbProviderFactories>
<add name="Npgsql Data Provider"
invariant="Npgsql"
support="FF"
description=".Net Framework Data Provider for Postgresql Server"
type="Npgsql.NpgsqlFactory, Npgsql"/>
</DbProviderFactories>
(2)在GAC中注册npgsql.dll和mono.security.dll
一个。检查 npgsql 和 mono.security 是否在 GAC 文件夹中(我的 GAC 文件夹位于 C:\Windows\Microsoft.NET\assembly\GAC_MSIL)
如果没有,则使用 gacutil /i npgsql.dll 在命令提示符下使用 gacutil 将 npgsql 安装到 GAC
在 GAC 中注册 ngsql 和 mono.security dll,并在 machine.config 中为 [32 位和 64 位版本] 添加 dbfactory 提供程序