我正在考虑参与一个项目,使用C#.NET作为主要语言(在Windows平台上),PostgreSQL作为后端数据库(在Linux平台上)。我听说ODBC.NET可以轻松集成这两个组件。
有没有人实际上设置过C#和PostgreSQL之间的配合?如果有,您有什么建议如何进行,发现的问题等等?
我正在考虑参与一个项目,使用C#.NET作为主要语言(在Windows平台上),PostgreSQL作为后端数据库(在Linux平台上)。我听说ODBC.NET可以轻松集成这两个组件。
有没有人实际上设置过C#和PostgreSQL之间的配合?如果有,您有什么建议如何进行,发现的问题等等?
我正在使用 Npgsql2 组件来开发 C# 和 Postgres 相关的 IT 技术项目,它们运行速度快,强烈推荐。
你可以从 https://github.com/npgsql/Npgsql/releases 下载该组件。
注意:如果你想要一个能够与任何数据库兼容的应用程序,你可以使用 DbProviderFactory 类,并通过 IDbConnection、IDbCommand、IDataReader 和/或 IDbTransaction 接口来进行查询。
Npgsql是PostGreSQL的.Net提供程序,是一个优秀的驱动程序。如果您曾经使用过更传统的ADO.NET框架,那么这里真的很幸运。我有连接到Oracle的代码,几乎看起来与PostGreSQL连接相同。更容易过渡并重用脑细胞。
它支持所有标准的SQL调用操作,但也支持调用函数(存储过程)。这包括引用光标的返回。文档写得非常好,并提供了有用的示例,而不会变得哲学或深奥。从文档中直接复制代码,它将立即生效。
Francisco Figueiredo, Jr和他的团队在这方面做得非常出色。
现在可以在Github上找到它。
https://github.com/franciscojunior/Npgsql2
获取更多信息的最佳站点是: http://npgsql.projects.postgresql.org/
请阅读文档!http://npgsql.projects.postgresql.org/docs/manual/UserManual.html
(注:该链接为相关文档的网址)在 https://www.nuget.org/packages/linq2db.PostgreSQL/ 上有一个针对 PostgreSQL 的 Linq 提供程序。
您不应该遇到太多问题。正如其他人所提到的,有许多 .Net PostgreSQL 数据提供程序可用。您可能需要注意的一件事是,像 Linq 这样的功能可能无法使用。
只需转到工具-->NuGet程序包管理器-->管理Nuget程序包
搜索NpgSql,然后选择您的项目并单击安装
示例代码
public void Demo()
{
NpgsqlConnection connection = new NpgsqlConnection();
connection = d_connection; // your connection string
connection.Open();
NpgsqlCommand cmd = new NpgsqlCommand();
try
{
cmd.Connection = connection;
cmd.CommandText = "select * from your table name";
cmd.CommandType = System.Data.CommandType.Text;
using (var dataReader = cmd.ExecuteReader())
{
while (dataReader.Read())
{
string answer= dataReader.IsDBNull(0) ? "" : dataReader.GetString(0);
}
dataReader.Dispose();
}
}
catch (Exception e)
{
}
finally
{
cmd.Dispose();
connection.Dispose();
}
}
https://github.com/npgsql/Npgsql.EntityFrameworkCore.PostgreSQL/issues/438#issuecomment-486586272
System.Data.Common
中的抽象基类。虽然没有文档记录,但似乎在.NET2.0发布时,微软已经内部弃用了接口,转而使用基类,但并未通过其“Obsolete”属性进行通信。Github上的此问题是一个有趣的API兼容性阅读 :-) - mfeineis