
?
三、課程介紹
3.1 關(guān)于ORM
一、什么是ORM
ORM,即Object-Relational Mapping(對象關(guān)系映射),它的作用是在關(guān)系型數(shù)據(jù)庫和業(yè)務(wù)實體對象之間作一個映射,這樣,我們在具體的操作業(yè)務(wù)對象的時候,就不需要再去和復(fù)雜的SQL語句打交道,只需簡單的操作對象的屬性和方法。?
?
二、使用ORM的優(yōu)勢?
優(yōu)勢一、 隱藏了數(shù)據(jù)訪問細節(jié),“封閉”的通用數(shù)據(jù)庫交互,ORM的核心。他使得我們的通用數(shù)據(jù)庫交互變得簡單易行,并且完全不用考慮該死的SQL語句。快速開發(fā),由此而來。?
優(yōu)勢二、ORM使我們構(gòu)造固化數(shù)據(jù)結(jié)構(gòu)變得簡單易行
在ORM年表的史前時代,我們需要將我們的對象模型轉(zhuǎn)化為一條一條的SQL語句,通過直連或是DB helper在關(guān)系數(shù)據(jù)庫構(gòu)造我們的數(shù)據(jù)庫體系。而現(xiàn)在,基本上所有的ORM框架都提供了通過對象模型構(gòu)造關(guān)系數(shù)據(jù)庫結(jié)構(gòu)的功能。這,相當(dāng)不錯。
?
三、使用ORM的缺點?
第一:無可避免的,自動化意味著映射和關(guān)聯(lián)管理,代價是犧牲性能(早期,這是所有不喜歡ORM人的共同點)。現(xiàn)在的各種ORM框架都在嘗試使用各種方法來減輕這塊(LazyLoad,Cache),效果還是很顯著的。?
第二:面向?qū)ο蟮牟樵冋Z言(X-QL)作為一種數(shù)據(jù)庫與對象之間的過渡,雖然隱藏了數(shù)據(jù)層面的業(yè)務(wù)抽象,但并不能完全的屏蔽掉數(shù)據(jù)庫層的設(shè)計,并且無疑將增加學(xué)習(xí)成本.?
第三:對于復(fù)雜查詢,ORM仍然力不從心。雖然可以實現(xiàn),但是不值的。視圖可以解決大部分calculated column,case ,group,having,order by, exists,但是查詢條件(a and b and not c and (d or d))。。。。。。?
世上沒有驢是不吃草的(又想好又想巧,買個老驢不吃草),任何優(yōu)勢的背后都隱藏著缺點,這是不可避免的。問題在于,我們是否能容忍缺點?
3.2、幾種常見的ORM框架的比較?
幾種常用框架的比較?
以上就是市面上比較常見的.net ORM框架。其實比較完美的ORM框架應(yīng)該是滿足:?
1.對象與數(shù)據(jù)庫的映射?
2.對象緩存?
3.可視化設(shè)計和代碼生成工具?
4.支持多數(shù)據(jù)庫?
5.動態(tài)查詢?
6.延遲加載?
7.非侵入式持久化?
8.性能優(yōu)良?
9.支持存儲過程和事務(wù)?
10.多面向?qū)ο罂蚣苤С?
ORM框架確實很方便,但發(fā)現(xiàn)也有其不足之處,比如多表聯(lián)合查詢,對視圖和存儲過程的處理不理想。整體性能低于面向SQL語句。?
以上幾種框架比較常用的應(yīng)該是NHibernate,微軟的EF及MyBatis.NET和FluentData。?
上述幾個框架各有優(yōu)缺點?
如:NHibernate 師出名門,大名鼎鼎的Hibernate廠商出品的專門針對.NET的ORM框架,優(yōu)點是:功能強大,資料齊全,缺點是配置復(fù)雜,學(xué)習(xí)成本高?
微軟的EF自然是在VS開發(fā)中首推的,優(yōu)點是和VS IDE集成很好,缺點是性能較NHiberte低,據(jù)說6.0后,性能明顯加強,甚至于超過NHibernate,但本人未測,另外,對其他數(shù)據(jù)庫的支持需要安裝第三方插件,還有個人感覺也過于寵大,使用起來,不夠靈活。MyBatic.NET功能和易用性介于NHibernate與EF之間。?
相比較而言,我們更推薦使用FluentData,一個輕量級開源的.NET ORM數(shù)據(jù)持久化框架?
?
3.3、什么是FluentData??
FluentData:一種使用Fluent API的新型輕量級ORM模型?
FluentData 是微型 ORM(micro-ORM)家族的一名新成員,旨在比大型 ORM(full ORM)更加易用。FluentData 于本月推出,它使用 fluent API 并支持 SQL Server、SQL Azure、Oracle 和 MYSQL。?
FluentData 的設(shè)計者 Lars-Erik Kindblad 談到:?
當(dāng)前市面上的 ORM 框架,如 Entity Framework 和 NHibernate,都過于復(fù)雜而且難于學(xué)習(xí)。此外,由于這些框架自身抽象的查詢語言以及從數(shù)據(jù)庫到 .NET 對象的映射太過麻煩,導(dǎo)致它們生成的 SQL 都很低效。?
FluentData 另辟蹊徑,它是一個輕量級框架,擁有簡單的 fluent API 并且很容易學(xué)會。?
與其他微型 ORM(如 Dapper 和 Massive)類似,F(xiàn)luentData 關(guān)注性能和易用性。它允許開發(fā)人員擁有對 SQL 較多的控制,而不是依賴 ORM 進行自動生成。它不僅可以使用 SQL 來執(zhí)行查詢、增添和更新操作,還可以支持使用存儲過程和事務(wù)。根據(jù)文檔描述,F(xiàn)luentData 可以在不改動已有結(jié)構(gòu)的情況下,與任何業(yè)務(wù)對象一同工作。
以下是 FluentData 的一些其他特性:?
· 多結(jié)果集(Multiple Result Set):在一次數(shù)據(jù)庫操作下返回多個數(shù)據(jù)集;?
· 開發(fā)人員可使用強類型對象或動態(tài)對象;?
· 可為創(chuàng)建時需要特殊處理的復(fù)雜對象自定義實體工廠(Custom Entity Factory);?
· 具有添加其他數(shù)據(jù)庫支持的能力。?
FluentData 需要 .NET 4.0,并支持 SQL Server、SQL Azure、SQL Server Compact 以及使用 .NET 驅(qū)動的 Oracle 和 MySQL。 想要了解進一步信息,如代碼示例和免費下載,請訪問CodePlex 站點上的 FluentData。(http://fluentdata.codeplex.com/)?
?
?.png)
?
3.4、課程培訓(xùn)目標(biāo):
1. 全面了解C# 4.5 語法新特性
2.全面深入了解什么是FluentData,以及如何使用FluentData結(jié)合.NET進行數(shù)據(jù)庫應(yīng)用開發(fā)
3.通過實例融會貫通FluentData API語法,特性以及最佳開發(fā)實踐
?
3.5、適合學(xué)員
1.能夠熟練使用C#語法開發(fā)簡單數(shù)據(jù)庫應(yīng)用。
2.了解SQL語句,SQL Server或MySQL,Oracle中任一種即可
?

?
3.6、課程大綱
第一部分:C# 4.5新語法特性(LinQ、Lambda表達式等)
.png)
?
第二部分:FluentData輕量級.NET ORM持久化技術(shù)詳解
.png)
?
?