2009-02-12 5 views
1

У меня есть существующее приложение ASP.NET, настроенное для подключения к базе данных MS SQL Server, и я пытаюсь изменить его, чтобы вместо этого использовать базу данных postgres.Настройка ASP.NET Development Server для подключения к базе данных postgres

Я хотел бы избежать модификации кода C#, если это возможно.

Я ожидал, что следующие изменения будут достаточно:

  1. Добавить ссылку на подходящий драйвер Postgres, в этом случае NauckIT.PostgreSQLProvider.dll
  2. Добавить provider тег, чтобы указать драйвер использовать, в этом случае :
 
    <connectionStrings> 
    <add name="default" connectionString="Server=127.0.0.1;Port=5432;User Id=finnw;Password=XXX;Database=default;Pooling=false" 
     providerName="Npgsql" /> 

    </connectionStrings> 

Но providerName тег кажется, не имеет никакого эффекта я (хотя это само по себе не приводит к ошибке.) nstead Я до сих пор вижу это сообщение об ошибке в браузере:

[ArgumentException: Keyword not supported: 'port'.] 
    System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable synonyms, Boolean firstKey) +4907604 
    System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules) +98 
    System.Data.SqlClient.SqlConnectionString..ctor(String connectionString) +55 

Это выглядит так, как будто он все еще пытается использовать драйвер MS SQL Server.

Как убедить его не в этом?

Я использую ASP.NET Development Server, а не IIS. Первоначально я думал, что это может быть проблемой, но this forum post предлагает обратное.

ответ

2

Довольно замечательный http://www.connectionstrings.com/ дает примеры всех видов строк подключения, а ваш выглядит нормально. К сожалению, ваш код использует SqlClient, который является единственным доступом к базе данных SqlServer в .Net. Вам придется взломать какой-то код ...

0

Вам необходимо перейти от использования классов в System.Data.SqlClient к использованию их аналогов в пространстве имен System.Data.Odbc. Вам также необходимо получить ODBC driver, установить его и настроить соединение ODBC на сервере. Затем вы можете использовать это именованное соединение для доступа к вашей базе данных.

1
  • Вам необходимо скачать и настроить драйвер подключения ADO.Net PostgreSQL, есть несколько один, чтобы сделать это, наиболее используемый Npgsql (http://pgfoundry.org/projects/npgsql/), скачать драйвер первым. (Скачать Npgsql2 Это новый один!)
  • Убедитесь, что вы используете правильный DbProvider в Npgsql2

  • Убедитесь, что поставщик Npgsql2 в ваших ссылках (в любом случае вы можете добавить это к вашему web.config) :

<system.web> <compilation> <assemblies> <add assembly="Npgsql2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/> </assemblies> </compilation> </system.web>

  • Убедитесь, что поставщик данных Npgsql2 установлен, как и ожидалось: (вы можете добавить это к вашему веб.конфигурационный файл):

<system.data> <DbProviderFactories> <add name="Npgsql2 Data Provider" invariant="Npgsql2" description=".Net Framework Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" /> </DbProviderFactories> </system.data>

  • Добавить строку соединения, как обычно:

<connectionStrings> <add name="Blog" connectionString="SERVER=localhost;Database=blogstarterkit;User name=test;Password=test" providerName="Npgsql2"/> <!-- provider invariant name, configured above --> </connectionStrings>

Кстати, редактор StackOverflow действительно плохо для форматирования кода XML ...: S

+1

Я уже почти пробовал то, что вы предлагаете здесь, без эффекта. – finnw

Смежные вопросы