Как добавить пользовательский поставщик БД, чтобы он был доступен в 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:
Как добавить пользовательский поставщик БД в этот список?
UPD: если я использую командную строку edmgen.exe, я получаю сообщение об ошибке:
ошибка 7001: не удалось найти или загрузить зарегистрированный поставщик данных.Net Framework.
4 ответа
Старый (от 7 февраля 2013 г.): невозможно добавить поставщика Npgsql, чтобы он был доступен в Visual Studio, потому что NpgSql пока не поддерживает DDEX.
Обновление от 29 декабря 2013 года: похоже, добавлена поддержка DDEX.
Вам необходимо объявить DbFactoryProvider в файле конфигурации (Web.config, Machine.config и т. Д.). Вот пример, который я извлек из проекта с использованием MySQL:
DbProviderFactories>
Я также предпочитаю декларировать их в конфигурационных файлах уровня приложения, и мои приложения используют локальную копию сборки. Это помогает с мобильностью, так как мы не можем гарантировать, что сторонний поставщик доступен в GAC.
Если вы хотите перечислить Npgsql в списке источников данных в Visual Studio, эта статья может быть немного полезна.
В любом случае, поскольку Visual Studio поставляется Microsoft, очевидно, вам нужно работать с таблицей реестра.
От: http://fxjr.blogspot.com/2011/05/npgsql-design-time-support-preview.html
приходит очень важный шаг, который вы должны сделать: внутри папки Npgsql.Designer2 находится файл с именем NpgsqlProvider.gen.reg. Вы должны сливать этот файл в свой реестр каждый раз, когда запускаете VS.Net для отладки проекта.