用户可使用该项目在 .NET 环境中连接和交互 PostgreSQL 服务器。它是高性能驱动,支持多数 PostgreSQL 类型,提供高效 bulk 导入/导出 API,支持多主机,可与 Entity Framework Core 集成。【此简介由AI生成】
OpenGauss - 专为 PostgreSQL 打造的 .NET 数据驱动
OpenGauss 是什么?
OpenGauss 是 PostgreSQL 的开源 .NET 数据驱动,让您能够通过 .NET 连接并操作 PostgreSQL 数据库。
完整文档请访问 OpenGauss 官方网站。若需搭配此驱动使用的 Entity Framework Core 提供程序,请参阅 OpenGauss.EntityFrameworkCore.PostgreSQL。
快速入门
以下是一个基础代码示例助您快速上手:
var connString = "Host=myserver;Username=mylogin;Password=mypass;Database=mydatabase";
await using var conn = new OpenGaussConnection(connString);
await conn.OpenAsync();
// Insert some data
await using (var cmd = new OpenGaussCommand("INSERT INTO data (some_field) VALUES (@p)", conn))
{
cmd.Parameters.AddWithValue("p", "Hello world");
await cmd.ExecuteNonQueryAsync();
}
// Retrieve all rows
await using (var cmd = new OpenGaussCommand("SELECT some_field FROM data", conn))
await using (var reader = await cmd.ExecuteReaderAsync())
{
while (await reader.ReadAsync())
Console.WriteLine(reader.GetString(0));
}
核心特性
- 高性能 PostgreSQL 驱动。在 TechEmpower Web 框架性能测试 中持续名列前茅。
- 全面支持大多数 PostgreSQL 类型,包括数组、枚举、范围、多范围、复合类型、JSON、PostGIS 等高级类型。
- 高效的大批量数据导入/导出 API。
- 故障转移、负载均衡及通用多主机支持。
- 通过 OpenGauss.EntityFrameworkCore.PostgreSQL 与 Entity Framework Core 实现深度集成。
完整文档请访问 OpenGauss 官网:https://www.opengauss.org。
测试
测试用户
create user gaussdb with password '<YOUR_PASSWORD>' sysadmin;
create database dotnet_a DBCOMPATIBILITY='A';
create database dotnet_b DBCOMPATIBILITY='B';
create database dotnet_pg DBCOMPATIBILITY='PG';
\c dotnet_a;
create schema gaussdb;
\c dotnet_b
create schema gaussdb;
\c dotnet_pg
create schema gaussdb;
BUG测试
Bug1645 -> OpenGauss.PostgresException : 42P07: 关系 "data" 已存在 Bug2278 -> OpenGauss.PostgresException : 0A000: 暂不支持 DOMAIN 类型 Bug2296 -> OpenGauss.PostgresException : 42P07: 关系 "data" 已存在 Bug3649 -> OpenGauss.PostgresException : 42601: 在 "binary" 附近存在语法错误
分块字符数组写入缓冲区编码空间 -> OpenGauss.PostgresException : 42601: 在 "BINARY" 附近存在语法错误 分块字符串写入缓冲区编码空间 -> OpenGauss.PostgresException : 42601: 在 "BINARY" 附近存在语法错误
连接测试
连接_从环境变量获取选项_成功 -> 设置环境变量("PGOPTIONS", "-c default_transaction_isolation=serializable -c default_transaction_deferrable=on -c foo.bar=My"))
大对象测试
OpenGauss.PostgresException : 0A000: openGauss 暂不支持大对象功能
类型映射测试
字符串转citext类型 -> OpenGauss.PostgresException : 58P01: 无法打开扩展控制文件: 文件或目录不存在
语句OID_传统批处理 -> 暂不支持 CREATE TABLE ... WITH OIDS 语法
模式测试
列模式数据类型 -> 暂不支持 line 类型
元数据集合 -> 暂不支持 pg_node_tree 类型
精度与范围 -> 暂不支持 pg_node_tree 类型
Noda时间测试
间隔转持续时间(含月份)失败 -> 不存在函数 make_interval(months := integer)