C# 操作國產數據庫【 人大金倉 】之四大模式

人大金倉優點

人大金倉是國產最主流數據庫之一

具有和PgSql一樣強悍的性能,同時人大金倉支持了四種數據庫模式 :

Oracle、PgSql、MySql和SqlServer ,假如你們系統有多種數據庫開發

有國產化要求,那麼你們切換到人大金倉就會很方便了

 

Nuget安裝 C# ORM

搜索人大金倉安裝前2個

 

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模式如下

//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、字符串空判段問題

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的結尾就可以。

 

源碼和安裝

Github源碼 https://github.com/donet5/SqlSugar  
Gitee源碼 https://gitee.com/dotnetchina/SqlSugar 
開源生態 https://www.donet5.com/Home/Doc?typeId=1215
Nuget https://www.donet5.com/Home/Doc?typeId=1226
AOT https://www.donet5.com/Home/Doc?typeI
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章