我有一个项目,我正在尝试从SQL Server移植到PostgreSQL。除了我无法让DbProviderFactory
使用Npgsql之外,我几乎已经完成了所有工作。
Factory = DbProviderFactories.GetFactory("Npgsql");
产量
未处理的例外情况: System.Configuration.ConfigurationErrorsException: 无法找到或加载已注册的 .Net框架数据提供商。
我该如何解决这个问题?
答案 0 :(得分:13)
尝试在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
答案 1 :(得分:10)
您是否阅读过the fine manual第3.4节“使用Npgsql和ProviderFactory”?
答案 2 :(得分:1)
类型属性值在 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
答案 3 :(得分:1)
这些是为我解决问题的步骤:
(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使用gacutil / i npgsql.dll在命令提示符下将npgsql安装到GAC
答案 4 :(得分:0)
在GAC中注册ngsql和mono.security dll,并在machine.config中添加dbfactory提供程序[32&amp; 64位版本]