14

我想在 Visual Studio 中使用自定义数据库提供程序。我需要它来使用实体框架。

比如我下载了 NpgSQL,在 GAC 中注册:

gacutil  -i  c:\temp\npgsql.dll
gacutil  -i  c:\temp\mono.security.dll

并添加到 machine.config 文件中:

<add name="Npgsql Data Provider"
invariant="Npgsql"  support="FF"
description=".Net Framework Data Provider for Postgresql Server"
type="Npgsql.NpgsqlFactory, Npgsql, Version=2.0.6.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" />

但是 Npgsql 没有出现在 Visual Studio 的数据源列表中:

VS中的数据源

如何将自定义数据库提供程序添加到此列表?

UPD:如果我使用命令字符串 edmgen.exe 我得到错误:

错误 7001:未能找到或加载已注册的 .Net Framework 数据提供程序。

4

4 回答 4

3

您需要在配置文件(Web.config、Machine.config 等)中声明 DbFactoryProvider。这是我从一个使用 MySQL 的项目中提取的示例:

<系统数据>
  <数据库提供者工厂>
    <remove invariant="MySql.Data.MySqlClient"/>
    <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.3.6.0,文化=中立,PublicKeyToken=c5687fc88969c44d"/>
  </DbProviderFactories>
</system.data>

我也更喜欢在应用程序级配置文件中声明这些,并让我的应用程序使用程序集的本地副本。这有助于可移植性,因为我们无法保证 GAC 中提供了 3rd 方提供程序。

于 2011-02-04T15:06:42.303 回答
3

旧的(从 2013 年 2 月 7 日起):无法在 Visual Studio 中添加 Npgsql 提供程序以访问,因为 NpgSql 目前不支持 DDEX。

2013 年 12 月 29 日更新:似乎添加了 DDEX 支持。

于 2011-02-07T15:29:21.917 回答
2

如果你想在 Visual Studio 的数据源列表中列出 Npgsql,这篇文章可能会有点帮助。

无论如何,由于 Visual Studio 是由 Microsoft 提供的,显然您需要处理注册表。

于 2012-09-06T04:14:48.910 回答
0

来自: http: //fxjr.blogspot.com/2011/05/npgsql-design-time-support-preview.html

你必须做一个非常重要的步骤:在 Npgsql.Designer2 文件夹中,有一个名为 NpgsqlProvider.gen.reg 的文件。每次启动 VS.Net 调试项目时,都必须将此文件合并到注册表

于 2011-09-05T06:20:05.980 回答