配置ASP.NET开发服务器以连接到postgres数据库
我有一个现有的ASP.NET应用程序,它被配置为连接到MS SQL Server数据库,我正在尝试将其修改为使用postgres数据库 如果可能的话,我希望避免修改C代码 我预计以下更改就足够了:配置ASP.NET开发服务器以连接到postgres数据库,asp.net,postgresql,connection-string,Asp.net,Postgresql,Connection String,我有一个现有的ASP.NET应用程序,它被配置为连接到MS SQL Server数据库,我正在尝试将其修改为使用postgres数据库 如果可能的话,我希望避免修改C代码 我预计以下更改就足够了: 添加对合适的postgres驱动程序的引用,在本例中是NauckIT.PostgreSQLProvider.dll 添加provider标记以指定要使用的驱动程序,在这种情况下: 看起来它仍在尝试使用MS SQL Server驱动程序 我如何说服它不要这样做 我使用的是ASP.NET开发服务器,而不是
NauckIT.PostgreSQLProvider.dll
provider
标记以指定要使用的驱动程序,在这种情况下:我使用的是ASP.NET开发服务器,而不是IIS。起初,我认为这可能是问题所在,但提出了相反的建议。这本非常棒的书给出了各种连接字符串的示例,您的看起来还可以。不幸的是,您的代码使用的是SqlClient,它是.Net中仅有SqlServer的数据库访问。您将不得不破解一些代码…您需要从使用System.Data.SqlClient中的类更改为在System.Data.Odbc命名空间中使用它们的类似项。您还需要获取、安装并在服务器上设置ODBC连接。然后,您可以使用此命名连接访问数据库。您需要下载并配置PostgreSQL ADO.Net连接驱动程序,有几种方法可以实现此目的,最常用的是Npgsql(),请先下载驱动程序。(下载新的Npgsql2!) 确保将正确的DbProvider用作Npgsql2 确保引用中包含Npgsql2提供程序(无论如何,您可以将其添加到web.config):
确保按预期安装了Npgsql2数据提供程序:(可以将其添加到web.config文件):
像往常一样添加连接字符串:
<connectionStrings>
<add name="Blog"
connectionString="SERVER=localhost;Database=blogstarterkit;User name=test;Password=test"
providerName="Npgsql2"/> <!-- provider invariant name, configured above -->
</connectionStrings>
我已经尝试了几乎完全符合您建议的方法,但没有效果。
[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
<system.web>
<compilation>
<assemblies>
<add assembly="Npgsql2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"/>
</assemblies>
</compilation>
</system.web>
<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>