如何添加自定义 DB 提供程序以在 Visual Studio 中访问?

Posted

技术标签:

【中文标题】如何添加自定义 DB 提供程序以在 Visual Studio 中访问?【英文标题】:How to add custom DB provider to be accessible in Visual Studio? 【发布时间】:2011-06-21 08:57:15 【问题描述】:

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

比如我下载了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 数据提供程序。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

我在 machine.config 文件中添加了 Npgsql 提供程序,但注意到发生了。 您必须选择正确的 machine.config 进行编辑。如果是 64 位系统,请编辑 c:\Windows\Microsoft.NET\Framework64\v4.0.*\Config\machine.config,否则使用目录“Framework”而不是“Framework64”来找到正确的配置文件.【参考方案2】:

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

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

【讨论】:

我们正在为此提供支持。我们希望尽快添加它。 只是跟进:我们在 2.2 beta1 中添加了对此的支持。您可以在此处获取有关如何编译、配置和安装它的更多信息:github.com/npgsql/Npgsql/wiki/… 希望对您有所帮助【参考方案3】:

发件人:http://fxjr.blogspot.com/2011/05/npgsql-design-time-support-preview.html

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

【讨论】:

【参考方案4】:

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

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

【讨论】:

以上是关于如何添加自定义 DB 提供程序以在 Visual Studio 中访问?的主要内容,如果未能解决你的问题,请参考以下文章

如何在自定义模板 Visual Studio 2019 中添加多个选项

为 Windows 实现自定义 unistd.h 以在 Visual Studio 上工作 - 问题

如何正确安装 libcurl 以在 Visual Studio 2017 中使用?

在 Visual Studio Code 中创建自定义语言

定义 EmbeddedDatabaseFactory 以在 Spring 上加载自定义 EmbeddedDatabaseConfigurer

如何添加 CSS 过渡以在自定义模式窗口上创建打开/关闭效果