如何添加可在Visual Studio中访问的自定义数据库提供程序?

时间:2011-02-04 13:25:55

标签: visual-studio postgresql npgsql dbproviderfactories

我想在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的数据源列表中:

Data source in VS

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

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

  

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

4 个答案:

答案 0 :(得分:3)

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

<system.data>
  <DbProviderFactories>
    <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, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
  </DbProviderFactories>
</system.data>

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

答案 1 :(得分:3)

Old(来自7 Fabruary 2013):无法在Visual Studio中添加Npgsql提供程序,因为NpgSql现在不支持DDEX。

2013年12月29日更新:似乎DDEX支持为added

答案 2 :(得分:2)

如果要在Visual Studio中的数据源列表中列出Npgsql,这article可能会有所帮助。

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

答案 3 :(得分:0)

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

  

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