今天我想分享一下我自己的ORM框架,雖然談不是很好,但我個人認為還是蠻好用的,跟大家分享交流一下。
首先說說我對現在主流的ORM框架的一些看法:
優點:
- 讓程序員不再關注數據庫細節,專心在業務邏輯上,程序員可以不懂數據庫就可以開發系統。
- 讓數據庫遷移變的非常方便,如果系統需要更改使用的數據庫,直接改配制就好了,不要再管不同數據庫之間的語法差異。
- 省時,可快速開發,因為不需要自己寫復雜的SQL語句,不需要封裝復雜的數據底層,這樣可以節省很多時間。
缺點:
- 我覺得不懂數據庫的程序員不是好程序員,ORM不能幫你生成所有的業務語句,有些復雜的生成不了,還是需要寫SQL,例如復雜的報表。
- 配制過於繁瑣,出錯后不好定位問題點在哪。
- 性能低,因為它內部是使用了大量反射,還有數據庫檢測,造成性能必然低下。
- 需要額外的學習成本,雖然不需要學習數據庫,但是需要學習ORM語句。
- 容易引起不規范開發,因為ORM可以在任何地方寫ORM語句然后調用開發,這樣對於初始程序員來說他們很可能在系統的任何地方亂丟ORM語句,這樣給維護帶來了很大的難度。
因為我一直都不看好這些ORM框架所以缺點寫多了點,可能還有些優點是我不知道的,路過的人要是知道可以給我留言,我再補上。
那現在來談一下我自己的ORM框架,之所以稱它為ORM框架是因為,它也達到了上面ORM框架的幾個優點。
首先我基於抽像數據操作層,寫了一套基於ADO.NET的抽像操作數據庫的方法DbHelper

然后基於這個DbHelper 我開發了抽象數據操作引擎,並擴展了不同的數據庫支持 這里只顯示了mysql的,還有MSSQL,ACCESS其實所有支持ADO.NET的數據庫都可以擴展進來

這樣做了以后,我的框架就可以做到數據庫無關性了,我可以使用任何數據庫,甚至可以混達數據庫。
現在我再說說怎么快速開發和讓程序員不用關注SQL語句。
對於程序員來說,沒有比看代碼更直接的了,我先給大家看看代碼:

這里演示了 增刪改查方法,首先這里我沒有寫一句SQL,也沒有ORM語句,寫法上應該比較直觀,我們數據模型進行了擴展,給字段都加入了屬性。
如果我要設置一個字段的值,我就會把它的IsValue設置為真,如果我要查詢一個字段我就把它的IsColume設置為真,我個人理解這種方式更接近OOP思想,更直接更容易理解,至少我現在帶新人讓他們用這個能很快上手,幾乎沒壓力。
這樣也避免了初級程序員隨便寫SQL語句,同時也方便維護和管理,又能快速開發,最主要是性能很高,因為我沒用反射,也不需要ORM語句到SQL語句的翻譯,同時也可以定制只查詢出部分字段(現在好像一些ORM達不到這個效果)。
那有人可能會說 你的實體模型肯定很復雜,要寫這個肯定很費時間,其實這句話對了一半,因為實體模型確實變復雜了,但並不費時間,因為我在上一篇博客中有提到過,我的實體模型全都是自動生成出來的,根本不需要人工來操作,包括我的數據層的代碼,它確實很大很復雜,但不需要人工處理,一步生成出來就直接可以用了。
好了,今天就介紹到這里了,我的框架的具體細節后續我會慢慢的詳細介紹出來,有興趣的可以看看。同時歡迎大家對我的框架提出寶貴的意見。
