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

来源:https://www.cnblogs.com/sunkaixuan/p/18055087
-Advertisement-
Play Games

人大金倉優點 人大金倉是國產最主流資料庫之一 具有和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、字元串空判段問題

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

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 經過大概三個月的學習和沉澱,我將.NET8.0的學習和使用,整理成了一個簡單的微服務項目,目前還在初級階段,後續會進行持續的更新和優化。 ...
  • 概述:Protobuf-net是C#中高效的二進位序列化工具,以緊湊、跨語言支持和卓越性能著稱。通過定義消息類型、序列化和反序列化實現數據傳輸,並可適用於Web介面。前端可使用protobuf.js庫解析Protobuf格式數據。 Protobuf-net 在 C# 中的編碼結構及使用方法 優點 P ...
  • 概述:RJCP.DLL.SerialPortStream庫為C#串口通信提供強大支持,跨平臺、高度可定製,集成基礎功能如打開、配置串口和數據讀寫,以及高級功能包括事件處理、超時設置等,極大簡化串口開發流程,適用於不同平臺和複雜通信需求。 C#串口開發之RJCP.DLL.SerialPortStrea ...
  • .NET Core WebAPI項目部署iis後Swagger 404問題解決 前言 之前做了一個WebAPI的項目,我在文章中寫到的是Docker方式部署,然後考慮到很多初學者用的是iis,下麵講解下iis如何部署WebAPI項目。 環境準備 iis ASPNETCoreModuleV2 重點 . ...
  • CYQ.Data 是一個用於操作資料庫的框架,可以方便地連接和管理各種類型的資料庫。在操作達夢資料庫時,使用 CYQ.Data 框架可以提供以下功能和優勢......總的來說,使用 CYQ.Data 框架操作達夢資料庫可以簡化開發流程,提高開發效率,同時也增強了系統的穩定性和安全性。 ...
  • 一:背景 1. 講故事 先說一下題外話,一個監控別人系統運行狀態的程式,結果自己出問題了,有時候想一想還是挺諷刺的,哈哈,開個玩笑,我們回到正題,前些天有位朋友找到我,說他們的系統會偶發性CPU爆高,CPU上去了就下不來了,讓我幫忙看一下怎麼回事,而且自己也分析過了,沒找到哪裡有問題,寫監控的都是高 ...
  • Playwright 是一個由 Microsoft 開發的開源工具,用於自動化 Web 瀏覽器的測試和操作。它提供了一種跨瀏覽器、跨平臺的自動化解決方案,可以在 Chromium、Firefox 和 WebKit(Safari)等多種瀏覽器上進行測試和操作。本篇隨筆介紹Playwright的一些特點... ...
  • 概述:在.NET Core中,通過創建RequestCountMiddleware中間件,結合MemoryCache,實現了記錄最近5分鐘請求次數的功能。該中間件在每個請求中更新計數,並使用緩存存儲,為簡單而實用的請求監控提供了一個示例。 要實現一個在.NET Core中記錄最近5分鐘請求次數的Re ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...