C# 操作国产数据库【 人大金仓 】之四大模式

火影  金牌会员 | 2024-5-13 02:46:15 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 851|帖子 851|积分 2553

人大金仓优点

人大金仓是国产最主流数据库之一
具有和PgSql一样强悍的性能,同时人大金仓支持了四种数据库模式 :
Oracle、PgSql、MySql和SqlServer ,假如你们系统有多种数据库开发
有国产化要求,那么你们切换到人大金仓就会很方便了
 
Nuget安装 C# ORM
  1. SqlSugarCore
  2. SqlSugarCore.Kdbndp
复制代码
SqSugar和人大金仓官方有深层次的合作,SqlSugar在人大金仓的支持上非常的全面
不是简简单的去实现CRUD,而是把人大金仓的每个特性都支持的很好 
Oracle模式的存储过程、Schema
 R3、 R6 Oracle模式、R6 PgSql模式 、R6 MySql模式和R6 SqlServer模式
建库 、建表和SQL函数等都完美支持
 
数据库版本配置

每个版本都有些留意点,有些需要提定一下模式,有些需要升级一下nuget
R3 老版本

直接安装 和使用
R6:Oracle模式(保举默认 )

 支持存储过程 和 PostgreSQL语法 (保举)
R6:MySql模式 ( 需要独立最新 )

SqlSugarCore.Kdbndp 到最新版本
R6:PostgreSQL模式(需配置)

配置一下pg模式如下
  1. //SqlSugarCore 5.1.4.143-preview08 支持
  2. SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
  3. {
  4.     DbType = DbType.Kdbndp,
  5.     ConnectionString ="Server=127.0.0.1;Port=54321;UID=SYSTEM;PWD=system;database=SQLSUGAR4XTEST1",
  6.     IsAutoCloseConnection = true,
  7.     MoreSettings=new ConnMoreSettings()
  8.     {
  9.         //SqlSugarCore 5.1.4.143
  10.         DataBaseModel= DbType.PostgreSQL//配置PG模式主要是兼容系统表差异
  11.     }
  12. })
复制代码
R6:SqlServer模式(需配置)

怎样要使用CodeFirst需要配置
  1. SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
  2. {
  3.     DbType = DbType.Kdbndp,
  4.     ConnectionString ="Server=127.0.0.1;Port=54321;UID=SYSTEM;PWD=system;database=SQLSUGAR4XTEST1",
  5.     IsAutoCloseConnection = true,
  6.     MoreSettings=new ConnMoreSettings()
  7.     {
  8.         //SqlSugarCore 5.1.4.144-preview16+ 支持
  9.         DataBaseModel= DbType.SqlServer//配置SqlServer模式主要是兼容CodeFirst报错
  10.     }
  11. })
复制代码
已知题目:
1、Date类型不支持,只支持DateTime类型 金仓官方在开发了
2、it.时间.Date==时间.Date 要改成 it.时间.ToString("yyyy-MM-dd")==时间.ToString("yyyy-MM-dd")
 
3、表模式

2种模式用法小有区别,保举规范表
1. 规范表: 自动转大写  
2. 驼峰表: 不自动转大写
规范(自动转大写) 

表名 STUDENT  字段 ID  NAME   ,直接用就行了SqlSugar不需要设置
  1. SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
  2. {
  3.        DbType = DbType.Kdbndp,
  4.        ConnectionString ="Server=127.0.0.1;Port=54321;UID=SYSTEM;PWD=system;database=SQLSUGAR4XTEST1",
  5.        IsAutoCloseConnection = true
  6. });
  7.   //自动生成下划线看PostgreSQL文档用法差不多
复制代码
不规范(不转换大写)

 需要配置禁用转大写
  1. SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
  2. {
  3.        DbType = DbType.Kdbndp,
  4.        ConnectionString = "Server=127.0.0.1;Port=54321;UID=SYSTEM;PWD=system;database=SQLSUGAR4XTEST1",
  5.        IsAutoCloseConnection = true,
  6.        MoreSettings=new ConnMoreSettings() {
  7.            IsAutoToUpper=false //禁用自动转成大写表 5.1.3.41-preview08
  8.        }
  9.    });
  10.   //注意:请升级到 5.1.3.41-preview08 以上版本  
复制代码
 
5、操作人大金仓数据库
  1. using SqlSugar;
  2. SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()
  3. {
  4.     ConnectionString = "datasource=demo.db",
  5.     DbType = DbType.Kdbndp,//MySql和SqlServer模式看上面需要配置DatabaseModel
  6.     IsAutoCloseConnection = true
  7. });
  8. //建库
  9. Db.DbMaintenance.CreateDatabase();//达梦和Oracle不支持建库
  10. //建表(看文档迁移)
  11. Db.CodeFirst.InitTables<Student>(); //所有库都支持     
  12. //查询表的所有
  13. var list = Db.Queryable<Student>().ToList();
  14. //插入
  15. Db.Insertable(new Student() { SchoolId = 1, Name = "jack" }).ExecuteCommand();
  16. //更新
  17. Db.Updateable(new Student() { Id = 1, SchoolId = 2, Name = "jack2" }).ExecuteCommand();
  18. //删除
  19. Db.Deleteable<Student>().Where(it => it.Id == 1).ExecuteCommand();
  20.   
  21. //实体与数据库结构一样
  22. public class Student
  23. {
  24.     //数据是自增需要加上IsIdentity
  25.     //数据库是主键需要加上IsPrimaryKey
  26.     //注意:要完全和数据库一致2个属性
  27.     [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
  28.     public int Id { get; set; }
  29.     public int? SchoolId { get; set; }
  30.     public string? Name { get; set; }
  31. }
复制代码
  
6、架构支持 schema(非Public)

连接字符串上加上 searchpath=架构名 ,可以支持多架
 
7、字符串空判段题目


 
8、.NET Framework用户dll

需要引用的dll ,官方定制比外面找的dll更加强大  ( .NET Core用户直接安装SqlSugarCore就可以了)
Kdbndp_dll.rar   framework用户用R6Oracle大概R3 只有.NET Core支持了四种模式
 
9、常见题目

 9.1 string ==""无效

oracle模式下没空只有null, 多库用户可以配置一下off参数
ora_input_emptystr_isnull = off  这个参数放到,kingbase.conf的结尾就可以。
 
源码和安装

Github源码https://github.com/donet5/SqlSugar  
Gitee源码https://gitee.com/dotnetchina/SqlSugar 
开源生态https://www.donet5.com/Home/Doc?typeId=1215
Nugethttps://www.donet5.com/Home/Doc?typeId=1226
AOThttps://www.donet5.com/Home/Doc?typeI

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

火影

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表