認得筆者進入公司的時候接觸的第一個ORM框架是Entity Framework。為了Entity Framework也看了不些的英文資料(不是筆者裝B哦)。正式使用三個月后。筆者對他有一個全面性的認識。我只能說他真的很強大,也很方便??墒俏也⒉皇呛芟矚g他。要問為什么的話,筆者只能說喜歡就是喜歡。不喜歡就是不喜歡。不需要過多的理由。筆者就是這樣子的一個人。但是筆者不會忽略他的強大的一面。微軟的目標還是老樣子——開發(fā)簡單化。只是在Entity Framework的數(shù)據(jù)遷移上面筆者不是很喜歡。至少在筆者團隊開發(fā)過程常常會出現(xiàn)因版本不對導至數(shù)據(jù)丟失。不管如何筆者對Entity Framework的使用也至少有一年的時間。由于項目以領域驅(qū)動(DDD)為核心思想。所以在設計的時候,會用到一些筆者覺得還不錯的思想。比如工作單元(Unit Of Work模式)。Entity Framework在早期的時候是不開源碼。筆者以前是從事JAVA開發(fā)的。這對筆者來講心態(tài)上有一點不能接受(當然這也是筆者個人心態(tài))。終于Entity Framework6開源碼了。如果有興趣的朋友可以下載下來看看(源碼地址:https://github.com/aspnet/EntityFramework6)。
第二年時候筆者接觸了第二個ORM框架是LinqToDB。筆者不是想強調(diào)LinqToDB有多么好。筆者只是覺得他是一個相當不錯的開源ORM框架。功能不比EF差,用法上很接近的EF,卻比EF來得輕量,而且又多出了自己的特色。所以如果你用EF用得有一點煩了或是覺得EF有一點笨重。想去看看有沒有別的ORM框架。不煩試試LinqToDB。
開發(fā)環(huán)境
對于LinqToDB的dll包在NuGet上可以下載到。只要輸入“l(fā)inq2db”即可。同時也可以在Github上面下載(https://github.com/linq2db/linq2db)。最好選擇跟筆者一樣子的版本,比較穩(wěn)定。如下
軟件開發(fā)工具:Visual Studio 2013
LinqToDB版本:linq2db-Release.1.0.7.4
數(shù)據(jù)庫:SQL Server 2008R
LinqToDB介紹
LinqToDB做為一個輕量級的ORM框架。當然可以讓開發(fā)人員用面向?qū)ο蟮乃枷雭聿僮鲾?shù)據(jù)庫。而且他基于是Linq上面進行開發(fā)的。所以一般的Linq操作他也是支持的。同時作者又擴展對應的DML和DDL。比如增加 Insert, Delete, Update, CreateTable, DropTable等方法。相對于EF來講,LinqToDB顯得還是很弱小,沒有那么強大。LinqToDB可以說只是把Linq動作變成對應的SQL語句。然后在進行操作數(shù)據(jù)庫。這顯然更加接近原生態(tài)的做法。也是筆者為什么喜歡的點之一。那么LinqToDB到底能支持多少種數(shù)據(jù)庫。作者在Github上也做也明確指出來。如下。
LinqToDB是如何使用呢?作者在Github上面用了經(jīng)典的Northwind數(shù)據(jù)庫來講解。不如筆者也來用一下Northwind數(shù)據(jù)庫進行講解本系列的一些試驗和列子。Northwind數(shù)據(jù)庫是Sql Server 2000數(shù)據(jù)庫的經(jīng)典設計的數(shù)據(jù)庫。如果不懂的朋友,請百度一下。我們都知道EF有三種模式開發(fā)。那么是不是意味著LinqToDB也有可能有這三種開發(fā)呢?對于這一點作者也沒有很明確的說明。LinqToDB并沒有像EF那樣子可以根據(jù)設計好的類來生成對應的數(shù)據(jù)庫表結構。只能說目前LinqToDB有倆種方式來進行開發(fā)——一種原生態(tài)的代碼,一種根據(jù)TT模板。原生態(tài)的代碼就是數(shù)據(jù)庫建完之后,配置對應的映射,然后自己業(yè)務操作。根據(jù)TT模板就是用TT模板生成數(shù)據(jù)庫對象映射。這倆種方式筆者會更加的喜歡前一種。
LinqToDB和EF有一個相類似點。他們都有一個關鍵的類。這個