SqlSugar和人大金仓官方有深度整合,SqlSugar在人大金仓是最好的,不光光C#最好,所有语言中是最好的,并且支持Oracle模式的存储过程和游标等。
有官方支持为依靠,已有非常多创信项目成功上限,支持多种协议加密(国密SM3等) ,.NET下人大金仓整合最好的ORM
SqlSugarCore //建议最新
每个版本都有些注意点,有些需要提定一下模式,有些需要升级一下nuget
//可以查看安装的模式 show database_mode; //查看版本号 SELECT version();
直接安装 和使用 ,兼容PG语法(推荐 )
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
{
DbType = DbType.Kdbndp,
ConnectionString ="Server=127.0.0.1;Port=54321;UID=SYSTEM;PWD=system;database=SQLSUGAR4XTEST1",
IsAutoCloseConnection = true,
MoreSettings=new ConnMoreSettings()
{
DatabaseModel= DbType.Oracle
}
})升级到 5.1.4.152+
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
{
DbType = DbType.Kdbndp,
ConnectionString ="Server=127.0.0.1;Port=54321;UID=SYSTEM;PWD=system;database=SQLSUGAR4XTEST1",
IsAutoCloseConnection = true,
MoreSettings=new ConnMoreSettings()
{
//SqlSugarCore 升级到 5.1.4.152 +
DatabaseModel= DbType.MySql//配置MySql模式主要是兼容系统表差异
}
})配置一下pg模式如下
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
{
DbType = DbType.Kdbndp,
ConnectionString ="Server=127.0.0.1;Port=54321;UID=SYSTEM;PWD=system;database=SQLSUGAR4XTEST1",
IsAutoCloseConnection = true,
MoreSettings=new ConnMoreSettings()
{
//SqlSugarCore 升级到 5.1.4.146 +
DatabaseModel= DbType.PostgreSQL//配置PG模式主要是兼容系统表差异
}
})注意:下载SqlServer客户端不要下载错了,一定要下载C12,C12是成熟的SqlServer模式

最新版本完美支持了sqlserver模式达到可用级别
24年5月以后的安装文件需要升级到 SqlSugar 5.1.4.161+
24年5月之前的数据库用 5.1.4.160及以下版本
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
{
DbType = DbType.Kdbndp,
ConnectionString ="Server=127.0.0.1;Port=54321;UID=SYSTEM;PWD=system;database=SQLSUGAR4XTEST1",
IsAutoCloseConnection = true,
MoreSettings=new ConnMoreSettings()
{
//SqlSugarCore 升级到 5.1.4.146 +
DatabaseModel= DbType.SqlServer//配置SqlServer模式主要是兼容CodeFirst报错
//该模式下已知问题:
//SqlServer模式下不支持Date类型请使用DateTime类型
//时间.Date==时间.Date要改成it.时间.ToString("yyyy-MM-dd")==时间.ToString("yyyy-MM-dd")
}
})
//SqlServer模式需要独立安装最新版本驱动
//SqlSugarCore.Kdbndp 9.3.6.719R3是比较老的数据库版本(新的看R6用法)
SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()
{
DbType = DbType.Kdbndp,
ConnectionString = "Server=127.0.0.1;Port=54321;UID=system;PWD=123;database=test",
InitKeyType = InitKeyType.Attribute,
IsAutoCloseConnection = true,
}, db =>
{
db.Aop.OnExecutingChangeSql = (s, p) =>
{
s = s.Replace("pg_catalog.", "");//R3比较老和高版本有些函数冲突需要加替换
return new KeyValuePair<string, SugarParameter[]>(s, p);
};
});
//R3 SqlSugarCore 5.1.4.143 这个版本兼容比较好
//新的驱动可能会慢慢出现对R3支持不友好差距题2种模式用法小有区别,推荐规范表
1. 规范表: 自动转大写
2. 驼峰表: 不自动转大写
表名 STUDENT 字段 ID NAME ,直接用就行了SqlSugar不需要设置
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
{
DbType = DbType.Kdbndp,
ConnectionString ="Server=127.0.0.1;Port=54321;UID=SYSTEM;PWD=system;database=SQLSUGAR4XTEST1",
IsAutoCloseConnection = true,
MoreSettings=new ConnMoreSettings()
{
//默认IsAutoToUpper=true 会自动转大写
DatabaseModel= DbType.Oracle//根据库模式设置相应值
}
});
//自动生成下划线看PostgreSQL文档用法差不多需要配置禁用转大写
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
{
DbType = DbType.Kdbndp,
ConnectionString = "Server=127.0.0.1;Port=54321;UID=SYSTEM;PWD=system;database=SQLSUGAR4XTEST1",
IsAutoCloseConnection = true,
MoreSettings=new ConnMoreSettings() {
IsAutoToUpper=false, //禁用自动转成大写表 5.1.3.41-preview08
DatabaseModel= DbType.Oracle//根据库模式设置相应值
}
});
//注意:请升级到 5.1.3.41-preview08 以上版本基本上和PgSql一模一样更贴近开发功能也继承了pgsql所有功能,对开发人员比较友好
查询
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);
插入
//返回插入行数 db.Insertable(insertObj).ExecuteCommand(); //都是参数化实现 //插入返回自增列 db.Insertable(insertObj).ExecuteReturnIdentity(); //返回雪花ID 看文档3.1具体用法(在最底部) long id= db.Insertable(实体).ExecuteReturnSnowflakeId();
更多用法看左边菜单
5.1.3.35-preview19 +
连接字符串上加上 searchpath=架构名 ,可以支持非public

需要引用的dll ,官方定制比外面找的dll更加强大 ( .NET Core用户直接安装SqlSugarCore就可以了)
1、Nuget: SqlSugar (framework的nuget是sqlsugar不是sqlsugarcore)
2、安装金仓 dll
建议找官方要最新的 ,人大金仓库更新很快.net framework需要找官方要最新的
2025年版本:
net45.rar
2024年版本:
Kdbndp2024.zip
较老版本 :
Kdbndp_dll.rar
show database_mode; //查看版本号 SELECT version();
升级:SqlSugarCore 5.1.4.149+
//1.字符串加上
;CursorAsDataRead=True
//2.具体用法
var p = new SugarParameter("@outcursor", null)
{
IsRefCursor = true,
Direction = System.Data.ParameterDirection.Output
};
db.Ado.UseStoredProcedure().ExecuteCommand("cs_20240312",p );
Console.WriteLine(p.Value);text[] int4[] 这种组合类型
//实体
SugarColums(IsArray=true)
//Sql参数
new SugarParameter("Names",array){ IsArray=true }//实体
SugarColums(IsJson=true)
//Sql参数
new SugarParameter("Names",json){ IsJson=true }需要安装2个DLL
NUGET: SqlSugarCore 5.1.4.189-preview12 及以上版本(勾预览)
NUGET: Kdbndp.LegacyPostgis_V9
实现(1)局部实现
需要OpenAlways保证是长链接
//实体类
//需要 NUGET: Kdbndp.LegacyPostgis_V9
public PostgisGeometry Geom { get; set; }
//用例
using (Db.Ado.OpenAlways())//开启长链接
{
KdbndpConnection conn = (KdbndpConnection)Db.Ado.Connection;
conn.TypeMapper.UseLegacyPostgis();
var yyy = Db.Queryable<TestAtt>().ToList();
Db.Insertable(inserObj)
//.UseParameter() 如果是批量插入要启用参数化
.ExecuteCommand();
}实现(2) 全局实现
不需要OpenAlways
所的操作都UseLegacyPostgis
//实体类
//需要 NUGET: Kdbndp.LegacyPostgis_V9
public PostgisGeometry Geom { get; set; }
SqlSugarClient context= new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = "Server=.xxxxx",
DbType = DbType.Kdbndp,
IsAutoCloseConnection = true,
InitKeyType = InitKeyType.Attribute,
MoreSetting=....//MoreSetting指定数据库模式和大小写等配置上面有介绍
},db=>{
db.Aop.CheckConnectionExecuted = (x, t) =>//Open之后事件
{
KdbndpConnection conn=((KdbndpConnection)x);
conn.TypeMapper.UseLegacyPostgis(); //全局使用
};
});
//CRUD都用使这个context就行了。独立安装最新预览版本的 SqlSugarCore.Kdbndp
SqlSugraCore 5.1.4.160+
千万不要用Sys__Config这个表名,和系统表冲突了 , 避免 sys_和 pg_ 开头
千万不要用Sys_user这个表名,和系统表冲突了 , 避免 sys_和 pg_ 开头
oracle模式下没空只有null, 多库用户可以配置一下off参数
ora_input_emptystr_isnull = off 这个参数放到,kingbase.conf的结尾就可以。
存储过程或者批量操SQL不扔出错误需要加上配置
字符串加上ErrorThrow=ture
一般是DatabaseModel没有设置,人大金仓支持四种模式右边菜单有 MYSQL PGSQL ORACLE SQLSERVER
2016 © donet5.comApache Licence 2.0