华为OpenGauss/ .NET GaussDB .NET操作

1、功能成熟

已经有大量用户成功完成了项目,sqlsugar针对GaussDB 做了多处理。

sqlsugar支持了2种连接方式

Npgsql方式和原生方式

如果功能要求不多需要成熟稳定用 Npgsql方式 (标题2)

如果需要用到大量GaussDB独有特性那么就用原生方式 (标题3)

2、Npgsql方式连接

优点:Npgsql 成熟稳定 

缺点:无法使用Npgsql以外特性

2.1 Npgsql方式连接字符串

用法和PGSQL一样 ,唯一区别 在连接字符串 后面加上No Reset On Close=true

PORT=5432;DATABASE=SqlSugar4xTest;HOST=localhost;PASSWORD=haosql;USER ID=postgres;No Reset On Close=true

2.2 Npgsql方式创建DB

Nuget安装:SqlSugarCore

var db=new SqlSugarClient(new ConnectionConfig()
            {
                //如果是OpenGauss需要DbType.OpenGauss
                DbType = SqlSugar.DbType.GaussDB ,
                ConnectionString = Config.ConnectionString,
                IsAutoCloseConnection = true,
                //个别特殊的数据库需要禁用Nvarchar
                 MoreSettings=new ConnMoreSettings(){ 
                    DisableNarvchar=true,  
                } 
            });

2.3 Npgsql方式 配置GaussDB(OpenGauss) 支持.NET 

注意:在.NET中我们要修改一下加密方式才能使用 

3个步骤一个不能少,依次按顺序操作

1.password_encryption_type=1 同时支持sha256和md5多重验证

2.重启服务

3.重新修改密码

详细说明: https://www.donet5.com/ask/9/21149

2.4 Npgsql方式数据类型和C#对照表

数据类型可以按下面的使用

GaussDBC#
numericdecimal
int2short
int1byte
int4int
int8long
booleanboolean
float4float
float8double
TEXT大文本
jsonC#可序列化的对象 特性要加IsJson=true
timestampDateTime
dateDateTime
timeTimeSpan
uuidGuid
bytes/bytea 目前bytes是确定支持Byte[]

2.5 Npgsql方式架构用法(SCHEMA)

searchpath=架构名 ,注意不要有空格

PORT=9210;searchpath=zhnf;DATABASE=db_test;HOST=192.168.1;PASSWORD=abc;USER ID=joe;No Reset On Close=true;

2.6 Npgsql方式禁用自动转小写

表名或者字段名存在大写的行情况,我们可以禁止转小写 (默认是推荐用小写表的

var db= new SqlSugarClient(new ConnectionConfig(){
           DbType = SqlSugar.DbType.PostgreSQL,
           ConnectionString = Config.ConnectionString,
           IsAutoCloseConnection = true,
           MoreSettings= new ConnMoreSettings()
           {
             PgSqlIsAutoToLower = false,//CRUD不自动转小写
             PgSqlIsAutoToLowerCodeFirst = false, // 建表 不自动转小写
           }})

3、原生方式连接

3.1 原生NUGET安装

SqlSugar.GaussDBNativeCore
SqlSugarCore

3.2 原生方式创建DB对象

//这行代码扔程序启动时
InstanceFactory.CustomAssemblies = new System.Reflection.Assembly[] {
            typeof(SqlSugar.GaussDBCore.GaussDBDataAdapter).Assembly };

//创建DB
var db = new SqlSugarClient(new ConnectionConfig()
{
    ConnectionString = "PORT=5432;DATABASE=SqlSugar5Demo;HOST=localhost;PASSWORD=postgres;USER ID=postgres",
    DbType = SqlSugar.DbType.GaussDBNative,//设置GaussDBNative
    IsAutoCloseConnection = true,
    MoreSettings = new ConnMoreSettings()
    {
         //如果是GaussDb就配置GaussDb如果是OpenGauss就配置
        DatabaseModel = SqlSugar.DbType.OpenGauss 
    }
}, db =>
{
    db.Aop.OnLogExecuting = (x, y) =>
    {
        Console.WriteLine(x);
    };

});


4、CRUD示例

GaussDB 查询

db.Queryable<Student>().ToList()//查询所有
db.Queryable<Student>().Where(it=>it.Id==1).ToList()//根据条件查询
//分页  int pageIndex = 1; // pageindex是从1开始的不是从零开始的
int pageSize = 20;
int totalCount=0;
//单表分页
var page = db.Queryable<Student>().ToPageList(pageIndex, pageSize, ref totalCount);

GaussDB插入

//返回插入行数
db.Insertable(insertObj).ExecuteCommand(); //都是参数化实现 
//插入返回自增列
db.Insertable(insertObj).ExecuteReturnIdentity(); 
//返回雪花ID 看文档3.1具体用法(在最底部)
long id= db.Insertable(实体).ExecuteReturnSnowflakeId();

GaussDB使用Sql

var dt=db.Ado.GetDataTable("select * from table where id=@id and name like @name",
new{id=1,name="%"+jack+"%"});

//原生SQL用实体 sql 查询
List<ClassA> t=db.Ado.SqlQuery<ClassA>(sql);

更多用法看左边菜单


关闭
果糖网