1. 程式人生 > >LiteORM-For-DotNet,我的第一個開源庫

LiteORM-For-DotNet,我的第一個開源庫

這是一個DotNet輕量級ORM框架,解決C#.Net開發過程中重複繁瑣的資料庫CURD操作。

前言                                                                                                                                            

因工作中接手的.net專案,原始碼裡面都用了動軟程式碼生成的原始碼做為資料庫操作類庫。其中,有些根本就沒有用到,今後也不會用到的冗餘程式碼——垃圾程式碼。而每次如果有表結構修改,就得重新生成表實體/手動修改實體類,然後再修改程式碼中實體類邏輯,再修改DAL(資料庫訪問層)的賦值程式碼、sql欄位、資料型別。

 

於是,產生一個想法,借鑑EF的理念,利用反射技術,用表實體去操作資料庫,做增、改、刪、查處理。並且,將表實體類更精細化標註,增加了欄位名、主鍵、自增長、註釋【標題】、資料型別、長度的屬性標識,更有利於實體生成更優的sql指令碼。

由此,通過反射技術把所有表CUDR操作的統一處理,以前修改了表結構,就得更新表實體類、修改邏輯程式碼、修改DAL。現在,只需求更新表實體及對應的邏輯程式碼就可以,不用再去維護DAL程式碼,幹掉那些每個DAL層中70%的程式碼,達到精簡程式碼,提高開發效率的目的。

有了這個想法,便開始了冗長的擼程式碼,斷斷繼繼歷經兩個月的時間,終於完成了構想的雛形。然後,又花點時間去了解一下怎麼玩github,把原始碼庫傳到上面去。放出來,讓有需要的人拿去用,希望各位看官多多指教、發表意見,大家一起改進,完善。

下面奉上我的github地址,走過路過的都進來看看,給個Star就更好不過了。

 

詳情介紹                                                                                                                                                            

專案開源庫結構圖

 

 

 

1、YEasyModel

主要實體類反射類庫,定義實體類欄位的資料型別、長度、主鍵等特性;定義CURD方法,查詢引數表示式、排序表示式。利用lambda定義查詢邏輯,生成sql過濾條件;查詢/更新欄位定義,通過反射生成對應的Sql引數;排序邏輯定義,生成欄位排序規則;DataTable與實體類轉換方法。

2、ModelApp

winform程式,用於配置連線資料庫,定義名稱空間、實體類名,生成指定的表/檢視的實體模型;

3、WebDemo

Webapi範例,簡單的表實體模型使用說明;

 

(暫時先寫這些,後面有時間再完善)

 

效能                                                                                                                                                    

以下四種不同方式查詢資料庫記錄並轉為實體類的測試:

m1,DataSet實體表查詢記錄;

m2,YEasyModel實體類工具查詢記錄;

m3,三層工廠模式查詢記錄,例項化一次,後面從快取取得例項;

m4,Entity Framework查詢記錄;

查詢消耗的時間單位是毫秒。

 

第一次查詢1條記錄

 

 

 

第二次查詢1條記錄

 

 

 

第三次查詢1條記錄

 

 

  

第四次連續執行50次的查詢1條記錄

 

 

  

執行1次查詢8條記錄

 

 

  

連續執行50次的查詢8條記錄

 

 

  

根據以上多種測試結果對比得出:

m1 —— DataSet排第三;

m2 —— YEasyModel其次;

m3 —— 三層工廠模式最快,因為有例項化快取,第二次開始便不用再建立例項物件, 單條資料查詢時,速度優勢明顯。但需要維護的邏輯程式碼多;

m4 —— EF最慢,且劣勢明顯;太慢了!

 

總結                                                                                                                                                   

(有空再寫)

最後,奉上github地址:https://github.com/michaelyes/LiteORM-For-DotNet。