介紹
新年之際,給大家介紹個我自己開發的ORM類庫Insql。TA是一個輕量級的.NET ORM類庫 . 對象映射基於Dapper , Sql配置靈感來自於Mybatis。簡單優雅性能是TA的追求。
項目首頁:https://rainrcn.github.io/insql
閑聊
以下可跳過😄
- 自己為什么會開發Insql?
- 最初的自己一樣是從寫最基本的Sql代碼來訪問數據庫
進而我們發現查詢出的數據與保存的數據通常都是實體對象,而還需要跨不同類型數據庫的需要。 - 這時ORM就成為了我們的工具。在使用ORM和Linq的出現讓我迫切希望找到一款好用的支持Linq的ORM框架。這個過程中使用了微軟的EntityFramework,還有各種同僚自己開發的ORM,有很多不錯的作品。自己也用了很多。當然在這里面我的評判標准就是性能優先,無需中間緩存層。操作能以最直接的方式直達數據庫。在Linq的支持上當然也需要豐富些。
- 我以為這就是我的歸宿,可是Linq只能解決不同類型數據庫的共性問題,有些ORM很難做到充分利用各個數據庫的特性,例如獨特的類型和獨特的方法,並且將Linq轉為Sql的支持能力也各個類庫不相同。當然不要告訴我自己遇到那種問題時再寫原生SQL.我盡可能希望我使用工具時簡單統一,不要有負擔存在。
- 直到我開發Java項目時,遇到了Mybatis。可以說真的很好用。它以XML配置SQL的方式,自己可以自由靈活的寫語句,當然數據庫的獨有方法特性都能使用。但是在dotnet core上我沒有找到類似好用的組件。於是就有了Insql。
- 如何設計Insql?
整體功能架構就以下兩塊
- 語句解析
首先先加載xxx.insql.xml配置,加載方式支持擴展,目前實現以程序集嵌入式文件方式加載。
解析各種配置節點元素,最終生成可直接執行的sql語句和sql參數。 - 對象映射
在保存和查詢時都需要實體對象的參與,這里對象映射就提供類這個功能。目前也有很多對象映射類庫,我們這里直接使用Dapper。輪子就不重復造了。
正題
2. 安裝
Package | Nuget Stable | Downloads |
---|---|---|
Insql | ![]() |
![]() |
Insql.MySql | ![]() |
![]() |
Insql.Oracle | ![]() |
![]() |
Insql.PostgreSql | ![]() |
![]() |
Insql.Sqlite | ![]() |
![]() |
3. 特性
- 支持 DotNet Core 2.0+ & DotNet Framework 4.6.1+
- 支持依賴注入系統
- 類似 MyBatis sql xml 配置語法
- 多數據庫支持
- 高性能
- 靈活擴展性
- 使用簡單直觀
@謝謝大家支持!!