最近研究了下ORM工具。總結一下。
之前有個小項目基於.Net40的WinForm。升級改造,想用ORM,由此引起。
第一選擇是SqlSugar,國內團隊制作,好用的很,但是.Net最低支持到4.5,而.Net45是不能在WinXP下運行,故可惜的放棄掉。
然后,找能在.Net40下運行的ORM,DosORM進入視野,但是發現有缺點,DosORM需要Model層都繼承Entity類,而這個類在ORM.dll里,這樣Model層將和ORM耦合,非常不好。而且DosTools工具生成的Model層,要求set里有onchange函數,而且還有內嵌類用於字段描述,簡單的POCO,DosORM無法Update操作,造成Model層不干凈。不佳。
轉而,又延伸到Dapper,發現不錯,1.52以下支持可以.Net40,對Model層簡單set,get即可,無依賴,干凈。缺點是它的CUDR需要寫一些SQL,感覺不好,但是有個Dapper.SimpleCUDR的項目,引用后,可以支持簡單泛型寫法。那就選他了。其實在普通項目對DB層的需要,就是對單表的增刪改查,多表的左連接查詢,多表的事務更新,沒有特別復雜的需求。
項目層次是,UI層引用Service層。Service層引用DB層。Model是獨立的。DB層里包含Dapper和數據庫連接器。Service層里有Dto,通過AutoMapper轉換Dto和Model。從而達到,UI與Service解耦,Service與數據庫解耦。
Dto放在Service層好,還是Model項目里好?有待驗證。