2011-02-04 2 views
14

Я хотел работать с пользовательским поставщиком БД в Visual Studio. Мне нужно использовать Entity Framework.Как добавить поставщика пользовательских баз данных в 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 не появлялся в списке Datasource в Visual Studio :

Data source in VS

Как добавить к этому списку пользовательского БД?

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

error 7001: Failed to find or load the registered .Net Framework Data Provider.

ответ

3

Old (from 7 Fab February 2013): невозможно добавить поставщика Npgsql в Visual Studio, поскольку NpgSql пока не поддерживает DDEX.

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

+3

Мы работаем над этой поддержкой. Мы надеемся, что скоро оно будет добавлено. –

+0

Просто продолжение: мы добавили поддержку этого в нашем бета-версии 2.2. Вы можете получить дополнительную информацию о том, как ее компилировать, настроить и установить здесь: https://github.com/npgsql/Npgsql/wiki/Visual-Studio-Design-Time-Support---DDEX-Provider Я надеюсь, что это поможет –

3

Вы должны объявить 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.

+0

Я добавил в файл machine.config поставщика Npgsql, но это произошло. – Anton

+1

Вы должны выбрать нужный файл machine.config для редактирования. В случае 64-битной системы отредактируйте файл c: \ Windows \ Microsoft.NET \ Framework64 \ v4.0. * \ Config \ machine.config, иначе используйте каталог «Framework» вместо «Framework64», чтобы найти правильный файл конфигурации , –

2

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

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