达梦数据库 .NET 操作

SqlSugar在.net中使用达梦数据库兼容做到了非常好,稳定5年了,已经过数年的迭代

Nuget 安装达梦操作库

SqlSugarCore

达梦表模式

分为大写和驼峰表2种模式,默认为大写表模式

 规范(大写表) 

表名 STUDENT  字段 ID  NAME   ,直接用就行了SqlSugar不需要设置

 SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
 {
       DbType = DbType.Dm,
       ConnectionString ="Server=localhost; User Id=SYSDBA; PWD=SYSDBA;DATABASE=新DB"
       IsAutoCloseConnection = true
 });
  //自动生成下划线看PostgreSQL文档用法差不多

不规范(存在小写字母)

 需要配置禁用自动转大写

 SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
 {
       DbType = DbType.Dm,
       ConnectionString ="Server=localhost; User Id=SYSDBA; PWD=SYSDBA;DATABASE=新DB",
       IsAutoCloseConnection = true,
       MoreSettings=new ConnMoreSettings() { 
           IsAutoToUpper=false //禁用自动转成大写表 5.1.3.41-preview04
       }
   });
  //注意:请升级到 5.1.3.41-preview04 以上版本

达梦介绍

 更接近Oracle,更偏向自主研发,对开发人员友好度不如金仓 

 至于其它国产数据库基本上都和PgSql 99.9%一样,建议你们还是用人大金仓比较省心

连接字符串

 老版本 :PORT=5236;DATABASE=DAMENG;HOST=localhost;PASSWORD=SYSDBA;USER ID=SYSDBA

 新版本: Server=localhost; User Id=SYSDBA; PWD=SYSDBA;DATABASE=新DB

 带Schema  比如果需要 xxx.表名

:Server=153.101.101:5236;User Id=SYSDBA;PWD=123456;SCHEMA=myshcema;DATABASE=DAMENG

连接池配置

  • connPooling 是否使用连接缓存池,默认为TRUE,表示开启。

  • connPoolSize 连接池中最大连接数,默认为100,连接池开启时有效。

  • connPoolCheck 是否检查连接池中连接的有效性,TRUE表示检查, FALSE表示不检查,默认为FALSE,连接池开启时有效。

  • stmtPooling 是否启用句柄重用,默认为TRUE。

  • poolSize 句柄重用缓冲区的大小,默认为100。

Docker版本:MySql Limit 和分页

Docker安装的用户如果照抄官网安装会装成mysql模式,这样导致ORACLE分页无效

需要添加下面配置

SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
{
    DbType = DbType.Dm,
    IsAutoCloseConnection = true,
    ConnectionString = Config.ConnectionString, 
     MoreSettings=new ConnMoreSettings()
     {
       //SqlSugarCore 5.1.4.157-preview09+版本支持
       DatabaseModel=SqlSugar.DbType.MySql //启用达梦mysql模式分页的兼容
    }
});

达梦操作数据库

 SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
 {
            ConnectionString = "Server=.xxxxx",//连接符字串
            DbType = DbType.Dm, //数据库类型
            IsAutoCloseConnection = true //不设成true要手动close
 });

查询

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();

更多用法看左边菜单

达梦架构Schema前缀

请升级到:5.1.4.90-preview10 以上版本

//连接字符串指定一下SCHEMA和=之间不要有空格
Server=153.101.199.83:5236;User Id=SYSDBA;PWD=123456;SCHEMA=myshcema;DATABASE=DAMENG

达梦Clob、Text类型用法

请升级到:5.1.4.92及以上版本

[SugarColumn(SqlParameterDbType =typeof(NClobPropertyConvert) )]
public string Name { get; set; }
//这个类型存在坑看下面

注意:clob (longtext)驱动BUG:

部分用户出插入空白,下面是解决方案

升级驱动:SqlSugarCore.Dm 1.3.0+

禁止Vahrchar(36)转GUID

连接字符串配置

varchar36ToGuid 表示是否将数据库 varchar(36)列类型返回.net Guid 类型。

TRUE 表示返回.net Guid 类型;

FALSE 表示返回.net string 类型;缺省为 TRUE

麒麟系统优化

程序启动时设置最小线程数

//设置最小线程池为 250  用户性能有大大提或
ThreadPool.SetMinThreads

常见错误

1 .net framework下面  dll无效

无法找到方法Dm.Comand.DmparameterCollection.get_Parameters

升级sqlsugar

2 .大文件clob或者blob问题

NUGET 独立安装 SqlSugarCore.Dm 最新版本

3.存储过程 无效

参数的顺序要一样 

https://www.donet5.com/ask/9/26555

4、docker版本问题

Docker安装的用户如果照抄官网安装会装成mysql模式,这样导致ORACLE分页无效

需要添加下面配置

SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
{
    DbType = DbType.Dm,
    IsAutoCloseConnection = true,
    ConnectionString = Config.ConnectionString, 
     MoreSettings=new ConnMoreSettings()
     {
       //SqlSugarCore 5.1.4.157-preview09+版本支持
       DatabaseModel=SqlSugar.DbType.MySql //启用达梦mysql模式分页的兼容
    }
});




关闭
果糖网