C# 操作国产数据库之【 人大金仓 】之四大模式
人大金仓优点
人大金仓是国产最主流ORM之一
具有和PgSql一样强悍的性能,同时人大金仓支持了四种数据库模式 :
Oracle、PgSql、MySql和SqlServer ,假如你们系统有多种数据库开发
有国产化要求,那么你们切换到人大金仓就会很方便了
Nuget安装ORM
SqSugar和人大金仓官方有深度整合,SqlSugar在人大金仓的支持上是一流的,并且支持Oracle模式的存储过程等。
并且可以有官方的支持,经过多年与金仓团队合作可以说SqlSugar是.NET下人大金仓整合最好的ORM,同时支持了
R3、 R6 Oracle模式、R6PgSql模式 、R6MySql模式和R6SqlServer模式
SqlSugarCore
SqlSugarCore.Kdbndp
数据库版本配置
每个版本都有些注意点,有些需要提定一下模式,有些需要升级一下nuget
R3 老版本
直接安装 和使用
R6:Oracle模式(推荐默认 )
支持存储过程 和 PostgreSQL语法 (推荐)
R6:MySql模式 ( 需要独立最新 )
SqlSugarCore.Kdbndp 到最新版本
R6:PostgreSQL模式(需配置)
配置一下pg模式如下
//SqlSugarCore 5.1.4.143-preview08 支持
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.143
DataBaseModel= DbType.PostgreSQL//配置PG模式主要是兼容系统表差异
}
})
R6:SqlServer模式(需配置)
如何要使用CodeFirst需要配置
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.144-preview16+ 支持
DataBaseModel= DbType.SqlServer//配置SqlServer模式主要是兼容CodeFirst报错
}
})
已知问题:
1、Date类型不支持,只支持DateTime类型 金仓官方在开发了
2、it.时间.Date==时间.Date 要改成 it.时间.ToString("yyyy-MM-dd")==时间.ToString("yyyy-MM-dd")
3、表模式
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
});
//自动生成下划线看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
}
});
//注意:请升级到 5.1.3.41-preview08 以上版本
5、操作人大金仓数据库
using SqlSugar; SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = "datasource=demo.db",
DbType = DbType.Kdbndp,//MySql和SqlServer模式看上面需要配置DatabaseModel
IsAutoCloseConnection = true
}); //建库
Db.DbMaintenance.CreateDatabase();//达梦和Oracle不支持建库 //建表(看文档迁移)
Db.CodeFirst.InitTables<Student>(); //所有库都支持 //查询表的所有
var list = Db.Queryable<Student>().ToList(); //插入
Db.Insertable(new Student() { SchoolId = 1, Name = "jack" }).ExecuteCommand(); //更新
Db.Updateable(new Student() { Id = 1, SchoolId = 2, Name = "jack2" }).ExecuteCommand(); //删除
Db.Deleteable<Student>().Where(it => it.Id == 1).ExecuteCommand(); //实体与数据库结构一样
public class Student
{
//数据是自增需要加上IsIdentity
//数据库是主键需要加上IsPrimaryKey
//注意:要完全和数据库一致2个属性
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
public int? SchoolId { get; set; }
public string? Name { get; set; }
}
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的结尾就可以。
C# 操作国产数据库之【 人大金仓 】之四大模式的更多相关文章
- 教你10分钟对接人大金仓EF Core 6.x
前言 目前.NET Core中据我了解到除了官方的EF Core外,还用的比较多的ORM框架(恕我孤陋寡闻哈,可能还有别的)有FreeSql.SqlSugar(排名不分先后).FreeSql和SqlS ...
- 通过ODBC接口访问人大金仓数据库
国产化软件和国产化芯片的窘境一样,一方面市场已经存在性能优越的同类软件,成本很低,但小众的国产化软件不仅需要高价买入版权,并且软件开发维护成本高:另一方面,国产软件目前普遍难用,性能不稳定,Bug ...
- DBeaver连接达梦|虚谷|人大金仓等国产数据库
前言 工作中有些项目可能会接触到「达梦.虚谷.人大金仓」等国产数据库,但通常这些数据库自带的连接工具使用并不方便,所以这篇文章记录一下 DBeaver 连接国产数据库的通用模版,下文以达梦为例(其他国 ...
- QT 之 ODBC连接人大金仓数据库
QT 之 使用 ODBC 驱动连接人大金仓数据库 获取数据库驱动和依赖动态库 此操作可在人大金仓官网下载与系统匹配的接口动态库,或者从架构数据库的源码中获取驱动和依赖动态库 分别为: 驱动动态库:kd ...
- 通过jmeter连接人大金仓数据库
某项目用的人大金仓数据库,做性能测试,需要用jmeter来连接数据库处理一批数据.jmeter连接人大金仓,做个记录. 1. 概要 在"配置元件"中添加"JDBC Con ...
- 人大金仓KCI
#include "bin/libkci.h" static void exit_nicely(KCIConnection *conn) { KCIConnectionDestor ...
- flowable如何适配国产数据库达梦
前言 flowable6.4.1流程引擎官方支持的数据库有:MySQL.hsql.Oracle.DB2 .postgres.SQL Server.H2.对于其他类型的数据库如何支持,尤其是国产数据库的 ...
- Camunda如何适配国产数据库达梦
前言 camunda流程引擎官方支持的数据库有:MySQL .MariaDB .Oracle .DB2 .PostgreSQL .SQL Server.H2.对于其他类型的数据库如何支持,尤其是国产数 ...
- .NET CORE 下如何使用国产数据库进行 开发
主流国产数据库 随着贸易战的升级 ,自主研发和知识产权也是一个大的趋势,达梦和人大金仓是国产数据库中比较主流的 1.达梦数据库 更接近Oracle,更偏向自主研发,对开发人员友好度不如金仓 达梦公司在 ...
- 金仓Kingbase数据库网页数据维护分析工具
金仓Kingbase是优秀的国产数据库产品,在能源,政务,国防等领域广泛使用, 现在TreeSoft数据库管理系统已支持Kingbase了,直接在浏览器中就可以操作查看Kingbase数据了,十分方便 ...
随机推荐
- Typescript中存取器getters和setters的使用
1.存取器 存取器可以让我们可以有效的控制对,对象中的中的成员的访问. 可以通过getters和setters来进行操作 在typescript中分别对应 get 和 set 2.如何解决报错 typ ...
- CTF&爬虫:掌握这些特征,一秒识别密文加密方式
关注微信公众号:K哥爬虫,持续分享爬虫进阶.JS/安卓逆向等技术干货! 前言 爬虫工程师在做加密参数逆向的时候,经常会遇到各种各样的加密算法.编码.混淆,每个算法都有其对应的特征,对于一些较小的网站, ...
- TienChin 活动管理-添加活动接口
ActivityController @PreAuthorize("hasPermission('tienchin:activity:create')") @Log(title = ...
- C#中使用AutoMapper
AutoMapper是一种流行的对象到对象映射库,可用于映射属于不同类型的对象.例如,您可能需要将应用程序中的DTO(数据传输对象)映射到模型对象. AutoMapper省去了手动映射此类不兼容类型的 ...
- json扩展之自定义序列化方式
简介:由于json.dumps() 只能序列化Python基本数据类型,如果我们想要在数据中掺杂时间对象,或者自定义类的对象则会造成序列化数据的失败,因此json.dumps() 提供了一个属性 cl ...
- 如何控制Tomcat的catalina.out的大小
catalina.out文件,数据主要来源为:System.out 和 System.err 在控制台上直接输出的信息. 编码时应避免使用System.out.println()和e.printSta ...
- CF1902
A 只要不是全 \(1\) 即可. B 二分完成天数. C \(x\) 取差的 \(gcd\),\(a_{n+1}\) 见缝插针. D 用一个 map 记录按原始操作序列,要走到 \((x,y)\) ...
- JS leetcode 两数之和 II - 输入有序数组 题解分析
壹 ❀ 引 我在JS leetcode 两数之和 解答思路分析一文中首次解决两数之和等于目标值的问题,那么今天遇到的是两数之和的升级版,题目为leetcode167. 两数之和 II - 输入有序数组 ...
- Laravel入坑指南(4)——数据库(Mysql)
来来来,新的一节出炉了.这一节大家一起了解,Laravel如何对Mysql进行CURD. 我们回顾一下,PHP操作Mysql无非就是通过五个要素:host(地址).username(用户名).pass ...
- Java集合框架学习(六) LinkedList详解
LinkedList介绍 ArrayList与LinkedList都是List接口的实现类,因此都实现了List的所有未实现的方法,只是实现的方式有所不同. LinkedList是采用链表的方式来实现 ...