LiteSql 一款輕量級ORM

来源:https://www.cnblogs.com/s0611163/archive/2022/08/05/16553601.html
-Advertisement-
Play Games

之前寫的DBHelper,名稱確實太Low,就改了個名,叫LiteSql,本來想叫SqlShuttle(SQL一把梭),奈何單詞太長。 有兩個版本,一個是LiteSql,一個是Dapper.LiteSql,LiteSql底層用的是ADO.NET,Dapper.LiteSql底層用的是Dapper,提 ...


之前寫的DBHelper,名稱確實太Low,就改了個名,叫LiteSql,本來想叫SqlShuttle(SQL一把梭),奈何單詞太長。

有兩個版本,一個是LiteSql,一個是Dapper.LiteSql,LiteSql底層用的是ADO.NET,Dapper.LiteSql底層用的是Dapper,提供的介面和功能是一樣的。

Dapper.LiteSql算是Dapper擴展。

簡介

一款使用原生SQL查詢的輕量級ORM,支持Oracle、MSSQL、MySQL、PostgreSQL、SQLite、Access資料庫。

代碼來源

代碼來源於需求,我整個職業生涯待過的公司,要麼用NHibernate要麼用DBHelper,NHibernate我很討厭,所以就折騰DBHelper了。原始版本的四個主流資料庫的DBHelper,都是經歷過實際項目的,不過現在除了自己寫程式或小項目,我自己沒有機會用了,沒有需求就沒有新功能,最近也只加了個手動分表的支持。

文檔

https://gitee.com/s0611163/LiteSql/blob/main/README.md
https://gitee.com/s0611163/Dapper.LiteSql/blob/main/README.md

NuGet

https://www.nuget.org/packages/LiteSql
https://www.nuget.org/packages/Dapper.LiteSql

為什麼用LiteSql

並非推薦大家用,但我相信會有人需要的,所以有必要寫這個博客自薦一下。

EF和EFCore雖然我寫過Demo,但我只能說我不瞭解。FreeSql和SqlSugar是語法糖的代表,功能很多很強大,語法糖最重要的是要儘量符合使用習慣,使大家儘量不看文檔,就能猜出來怎麼用,在這方面FreeSql和SqlSugar很難超越,所以沒必要重覆造輪子,除非有人覺得可以超越。SmartSQL類似Java的MyBatis。Dos.ORM我也看了一下,好像跟上述兩款同一類型。

Dapper不帶擴展肯定不好用,要是100多個欄位的表能寫死人。Dapper.Contrib遇到資料庫欄位名和屬性名不一致的情況還得自己想辦法,DapperExtensions要寫Mapping,那就是在用了擴展的情況下,自己再寫個小擴展。有人寫Demo就不考慮100多個欄位的情況,我知道你可能有自動生成的工具,你不說,就是沒有。

後續的話,對標FreeSql、SqlSugar那是不可能了,理念不同。能成為DBHelper的終級版或者Dapper擴展的終極版就很好了,這是需要首先進行科學論證的,我想EFCore肯定是經過科學論證的,這裡的科學家是指微軟的頂級大牛們。你說Dapper.Contrib有15M的下載量,怎麼就不解決一下欄位名和屬性名不一致的情況,是什麼理念導致的?DapperExtensions要寫Mapping,減少對實體類的侵入性,肯定是一種理念,但100個欄位我該怎麼寫,用什麼方案?

對於這個ORM,現在的問題是,我沒有用C#寫增刪改查的機會了,所以我不知道有什麼需要改進的地方,空想是想不出來的。我是希望有人共同維護,但一定要有理念和邊界,不是什麼功能都可以加,不然的話為什麼Dapper功能那麼少?

怎麼用?

怎麼用請看文檔。這裡我只說一點。
在我上家公司用OracleHelper或SqlServerHelper的時候,查詢、分頁查詢是一種固定寫法,適應性廣,我覺得很好,代碼結構非常清晰,很容易看懂和維護。


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

-Advertisement-
Play Games
更多相關文章
  • 前言 最近複習操作系統,看到了lru演算法,就去網上搜索下,因此發現了GeeCache,順手寫了一遍。研究下lru演算法的實現。 正文: lru使用map+鏈表實現。map裡面存儲了key以及其對應的鏈表節點。當我們根據某個key訪問緩存值的時候,可以經過map快速定位到該鏈表節點。從而獲取值 下麵我們 ...
  • 什麼是商城系統?商城系統又稱線上商城系統,是一個功能完善的線上購物系統,主要為線上銷售和線上購物服務。 一般的商城系統運營模式有B2C單商戶商城系統,B2B2C多商戶商城系統以及SAAS運營版。但是搭建一個商城系統過程很麻煩,這時候我們這些現成的來幫忙啦!likeshop是一個100%開源免費商用而 ...
  • 繼 Tabby、Warp 後,今天再來給大家推薦一款終端神器——WindTerm,完全開源,在 GitHub 上已經收穫 6.6k 的 star。 https://github.com/kingToolbox/WindTerm 作者還拿 WindTerm 和 Putty、xterm、Windows ...
  • 一、前言 我們在實際開發中肯定會遇到後端的時間傳到前端是這個樣子的:2022-08-02T15:43:50 這個時候前後端就開始踢皮球了,!! 後端說:前端來做就可! 前端說:後端來做就可! 作為一名有責任感的後端,這種事情怎麼能讓前端來搞呢! 還有就是Long類型的返回到前端可能會損失精度,這個情 ...
  • 在上一遍文章中已經介紹了PixelShaderEffect 用hlsl(著色器) 可以實現各種自定義濾鏡效果了,本文將用 "ThresholdEffect" 來講解如何編寫,編譯hlsl,然後使用PixelShaderEffect製作自定義濾鏡。 效果圖: 一.hlsl幫助程式介紹 在寫hlsl 代 ...
  • 簡介 FTP是FileTransferProtocol(文件傳輸協議)的英文簡稱,而中文簡稱為“文傳協議”。用於Internet上的控制文件的雙向傳輸。同時,它也是一個應用程式(Application)。基於不同的操作系統有不同的FTP應用程式,而所有這些應用程式都遵守同一種協議以傳輸文件。 FTP ...
  • 在繼承中,派生類可以拿到基類的方法,若是派生類很多,且有時某部分派生類的部分實現邏輯是一樣的,但其他的派生類又用不到,這個時候這些邏輯若是全部寫到派生類中,就會導致產生很多的重覆邏輯,但是若是寫到基類中就會導致其他用不到當前邏輯的派生類也能調用,這樣就會導致代碼維護出現了問題。由此產生了介面。 在C ...
  • WPF 截圖控制項之移除控制項(九)「仿微信」 WPF 截圖控制項之移除控制項(九)「仿微信」 作者:WPFDevelopersOrg 原文鏈接: https://github.com/WPFDevelopersOrg/WPFDevelopers 框架使用大於等於.NET40; Visual Studio ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...