Настройка ASP.NET Development Server для подключения к базе данных postgres

asp.net postgresql connection-string

22752 просмотра

3 ответа

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

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

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

  1. Добавьте ссылку на подходящий драйвер postgres, в этом случае NauckIT.PostgreSQLProvider.dll
  2. Добавьте providerтег, чтобы указать драйвер для использования, в этом случае:
   
     providerName = "Npgsql" />

   

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

[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. Первоначально я думал, что это может быть проблемой, но в этом форуме сообщение предполагает иное.

Автор: finnw Источник Размещён: 17.05.2019 03:33

Ответы (3)


1 плюс

Решение

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

Автор: MrTelly Размещён: 12.02.2009 12:33

2 плюса

Вам необходимо загрузить и настроить свой драйвер подключения PostgreSQL ADO.Net, есть несколько способов сделать это, наиболее часто используется 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 установлен как ожидалось: (вы можете добавить это в свой файл web.config):

<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>
Автор: kementeus Размещён: 13.02.2009 05:18

0 плюса

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

Автор: tvanfosson Размещён: 12.02.2009 12:49
Вопросы из категории :
32x32