人大金倉優點 人大金倉是國產最主流資料庫之一 具有和PgSql一樣強悍的性能,同時人大金倉支持了四種資料庫模式 : Oracle、PgSql、MySql和SqlServer ,假如你們系統有多種資料庫開發 有國產化要求,那麼你們切換到人大金倉就會很方便了 Nuget安裝 C# ORM 搜索人大金倉安 ...
人大金倉優點
人大金倉是國產最主流資料庫之一
具有和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、字元串空判段問題
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的結尾就可以。