認(rèn)得筆者進(jìn)入公司的時(shí)候接觸的第一個(gè)ORM框架是Entity Framework。為了Entity Framework也看了不些的英文資料(不是筆者裝B哦)。正式使用三個(gè)月后。筆者對他有一個(gè)全面性的認(rèn)識。我只能說他真的很強(qiáng)大,也很方便??墒俏也⒉皇呛芟矚g他。要問為什么的話,筆者只能說喜歡就是喜歡。不喜歡就是不喜歡。不需要過多的理由。筆者就是這樣子的一個(gè)人。但是筆者不會忽略他的強(qiáng)大的一面。微軟的目標(biāo)還是老樣子——開發(fā)簡單化。只是在Entity Framework的數(shù)據(jù)遷移上面筆者不是很喜歡。至少在筆者團(tuán)隊(duì)開發(fā)過程常常會出現(xiàn)因版本不對導(dǎo)至數(shù)據(jù)丟失。不管如何筆者對Entity Framework的使用也至少有一年的時(shí)間。由于項(xiàng)目以領(lǐng)域驅(qū)動(DDD)為核心思想。所以在設(shè)計(jì)的時(shí)候,會用到一些筆者覺得還不錯(cuò)的思想。比如工作單元(Unit Of Work模式)。Entity Framework在早期的時(shí)候是不開源碼。筆者以前是從事JAVA開發(fā)的。這對筆者來講心態(tài)上有一點(diǎn)不能接受(當(dāng)然這也是筆者個(gè)人心態(tài))。終于Entity Framework6開源碼了。如果有興趣的朋友可以下載下來看看(源碼地址:https://github.com/aspnet/EntityFramework6)。

第二年時(shí)候筆者接觸了第二個(gè)ORM框架是LinqToDB。筆者不是想強(qiáng)調(diào)LinqToDB有多么好。筆者只是覺得他是一個(gè)相當(dāng)不錯(cuò)的開源ORM框架。功能不比EF差,用法上很接近的EF,卻比EF來得輕量,而且又多出了自己的特色。所以如果你用EF用得有一點(diǎn)煩了或是覺得EF有一點(diǎn)笨重。想去看看有沒有別的ORM框架。不煩試試LinqToDB。

開發(fā)環(huán)境


對于LinqToDB的dll包在NuGet上可以下載到。只要輸入“l(fā)inq2db”即可。同時(shí)也可以在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做為一個(gè)輕量級的ORM框架。當(dāng)然可以讓開發(fā)人員用面向?qū)ο蟮乃枷雭聿僮鲾?shù)據(jù)庫。而且他基于是Linq上面進(jìn)行開發(fā)的。所以一般的Linq操作他也是支持的。同時(shí)作者又?jǐn)U展對應(yīng)的DML和DDL。比如增加 Insert, Delete, Update, CreateTable, DropTable等方法。相對于EF來講,LinqToDB顯得還是很弱小,沒有那么強(qiáng)大。LinqToDB可以說只是把Linq動作變成對應(yīng)的SQL語句。然后在進(jìn)行操作數(shù)據(jù)庫。這顯然更加接近原生態(tài)的做法。也是筆者為什么喜歡的點(diǎn)之一。那么LinqToDB到底能支持多少種數(shù)據(jù)庫。作者在Github上也做也明確指出來。如下。

LinqToDB是如何使用呢?作者在Github上面用了經(jīng)典的Northwind數(shù)據(jù)庫來講解。不如筆者也來用一下Northwind數(shù)據(jù)庫進(jìn)行講解本系列的一些試驗(yàn)和列子。Northwind數(shù)據(jù)庫是Sql Server 2000數(shù)據(jù)庫的經(jīng)典設(shè)計(jì)的數(shù)據(jù)庫。如果不懂的朋友,請百度一下。我們都知道EF有三種模式開發(fā)。那么是不是意味著LinqToDB也有可能有這三種開發(fā)呢?對于這一點(diǎn)作者也沒有很明確的說明。LinqToDB并沒有像EF那樣子可以根據(jù)設(shè)計(jì)好的類來生成對應(yīng)的數(shù)據(jù)庫表結(jié)構(gòu)。只能說目前LinqToDB有倆種方式來進(jìn)行開發(fā)——一種原生態(tài)的代碼,一種根據(jù)TT模板。原生態(tài)的代碼就是數(shù)據(jù)庫建完之后,配置對應(yīng)的映射,然后自己業(yè)務(wù)操作。根據(jù)TT模板就是用TT模板生成數(shù)據(jù)庫對象映射。這倆種方式筆者會更加的喜歡前一種。

LinqToDB和EF有一個(gè)相類似點(diǎn)。他們都有一個(gè)關(guān)鍵的類。這個(gè)

我想了解如何學(xué)習(xí)

姓名:
手機(jī):
留言: