Как добавить пользовательский провайдер БД, чтобы он был доступен в Visual Studio?

Я хотел работать с настраиваемым провайдером БД в Visual Studio. Мне это нужно для использования Entity Framework.

Например, я скачал 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.


person Anton    schedule 04.02.2011    source источник


Ответы (4)


Вам необходимо объявить DbFactoryProvider в файле конфигурации (Web.config, Machine.config и т. д.). Вот пример, который я вытащил из проекта с использованием 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.

person The Moof    schedule 04.02.2011
comment
Я добавил в файл machine.config провайдера Npgsql, но это не произошло. - person Anton; 05.02.2011
comment
Вы должны выбрать правильный файл machine.config для редактирования. В случае 64-битной системы отредактируйте файл c:\Windows\Microsoft.NET\Framework64\v4.0.*\Config\machine.config, в противном случае используйте каталог Framework вместо Framework64, чтобы найти нужный файл конфигурации. - person Tomas Walek; 26.03.2012

Старый (от 7 февраля 2013 г.): невозможно добавить поставщика Npgsql, чтобы он был доступен в Visual Studio, поскольку NpgSql на данный момент не поддерживает DDEX.

Обновление от 29 декабря 2013 г.: кажется, что поддержка DDEX была добавлено.

person Anton    schedule 07.02.2011
comment
Мы работаем над этой поддержкой. Мы надеемся, что скоро его добавят. - person Francisco Junior; 07.02.2011
comment
Просто продолжение: мы добавили поддержку этого в нашу бета-версию 2.2.1. Вы можете получить больше информации о том, как его скомпилировать, настроить и установить здесь: github.com/npgsql/Npgsql/wiki/ Надеюсь, это поможет - person Francisco Junior; 01.08.2014

Если вы хотите указать Npgsql в списке источников данных в Visual Studio, это статья может быть немного полезной.

В любом случае, поскольку Visual Studio поставляется Microsoft, очевидно, вам нужно поработать с таблицей реестра.

person xiaowing_sp    schedule 06.09.2012

Откуда: http://fxjr.blogspot.com/2011/05/npgsql-design-time-support-preview.html

наступает очень важный шаг, который вы должны сделать: внутри папки Npgsql.Designer2 есть файл с именем NpgsqlProvider.gen.reg. Вы должны объединять этот файл в свой реестр каждый раз, когда запускаете VS.Net для отладки проекта.

person goingzhao    schedule 05.09.2011