Как добавить пользовательского поставщика баз данных в 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:

Data source in VS

Как добавить в этот список поставщика пользовательских баз данных?

UPD: Если я использую командную строку edmgen.exe, я получил ошибку:

Ошибка 7001: Не удалось найти или загрузить зарегистрированный поставщик данных .Net Framework.

Ответы

Ответ 1

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

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

Ответ 2

Вам нужно объявить 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.

Ответ 3

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

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

Ответ 4

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

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