我想在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的数据源列表中:
如何将自定义数据库提供程序添加到此列表中?
UPD:如果我使用命令字符串edmgen.exe,我收到错误:
错误7001:无法找到或加载已注册的.Net Framework数据提供程序。
答案 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以调试项目时,都必须将此文件合并到注册表中