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


    人大金仓优点

    人大金仓是国产最主流数据库之一

    具有和PgSql一样强悍的性能,同时人大金仓支持了四种数据库模式 :

    Oracle、PgSql、MySql和SqlServer ,假如你们系统有多种数据库开发

    有国产化要求,那么你们切换到人大金仓就会很方便了

     

    Nuget安装ORM

    SqSugar和人大金仓官方有深度整合,SqlSugar在人大金仓的支持上是一流的,支持Oracle模式的存储过程、Schema

    并且支持 R3、 R6 Oracle模式、R6 PgSql模式 、R6 MySql模式和R6 SqlServer模式

    和金仓官方有多年合作,经过多年努力可以说SqlSugar是.NET下人大金仓整合最好的ORM 

    1
    2
    SqlSugarCore
    SqlSugarCore.Kdbndp

     

    数据库版本配置

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

    R3 老版本

    直接安装 和使用

    R6:Oracle模式(推荐默认 )

     支持存储过程 和 PostgreSQL语法 (推荐)

    R6:MySql模式 ( 需要独立最新 )

    SqlSugarCore.Kdbndp 到最新版本

    R6:PostgreSQL模式(需配置)

    配置一下pg模式如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    //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需要配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    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不需要设置

    1
    2
    3
    4
    5
    6
    7
    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文档用法差不多

    不规范(不转换大写)

     需要配置禁用转大写

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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、操作人大金仓数据库

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    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(); //所有库都支持    
      
    //查询表的所有
    var list = Db.Queryable().ToList();
      
    //插入
    Db.Insertable(new Student() { SchoolId = 1, Name = "jack" }).ExecuteCommand();
      
    //更新
    Db.Updateable(new Student() { Id = 1, SchoolId = 2, Name = "jack2" }).ExecuteCommand();
      
    //删除
    Db.Deleteable().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、字符串空判段问题

    XI(LJ0SUBJ_R%(BO1(TTGEH.png

     

    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++学习——引用详解
    删除双系统的ubuntu
    jQuery:表格的奇偶行变色,jquery实例之表格隔一行
    使用 Tesseract 和 OpenCV 基于深度学习的 OCR 文本识别
    云安全—分布式基础
    java计算机毕业设计智慧物业管理系统源码+数据库+系统+部署+lw文档
    Java 网络教程ServerSocket的简介说明
    【金融分析】Python:病人预约安排政策 | 金融模拟分析
    商城系统架构设计与实现
    零极限:关于蓝色太阳水原理
  • 原文地址:https://www.cnblogs.com/sunkaixuan/p/18055087