【发布时间】:2016-09-28 07:15:21
【问题描述】:
我正在使用 Dapper 连接到 pgsql 数据库。下面的代码几天前就可以工作了。但不知道为什么它现在不起作用。相同的凭据适用于 pgadmin3,但不适用于 c# 代码。 这是控制器方法,为简单起见,我在Get方法中编写了所有db代码。
下面的代码是
public IEnumerable<Item> Get()
{
string connString = "Server=192.168.1.11;Database=db_alpha1;Uid=postgres;Pwd=xxxxxx";
using (IDbConnection db = new SqlConnection(connString))
{
db.Open();
return db.Query<Item>("Select * From items").ToList();
}
}
这是db.Open();线上的错误:
与 SQL Server 建立连接时出现与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)
另外,我已经配置了pg_hba.conf文件,添加了我的系统ip地址。
【问题讨论】:
-
SqlConnection是一个用于连接Sql Server的类。您应该使用 Npgsql ADO.NET 提供程序中的适当类
-
我正在使用 Dapper 库进行数据库连接,我认为这是正确的连接方式,即使几天前它还在工作。
-
不行,SqlConnection 是用于 Sql Server 的,要使用 Postgres,您应该使用 this。 Dapper 与连接数据库的代码无关。这是通过库存 NET 类(SqlConnection、OleDbConnection)或通过特定的 ADO.NET 提供程序(MySqlConnection、OracleConnection 和NpgsqlConnection)完成的
-
哦,谢谢史蒂夫,这是我的错误,我在另一个项目中使用了 ngpsql,现在它可以工作了。用 SqlConnection 替换 NpgsqlConnection 。
标签: c# postgresql asp.net-web-api2 dapper