一、課程背景
本課程系《基于ASP.NET MVC 4 +Knockout.JS+Web API+FluentData+EasyUI 技術(shù)實(shí)現(xiàn)Web通用商業(yè)開發(fā)框架》
http://www.ibeifeng.com/bso.html
中的一個單品課程,北風(fēng)產(chǎn)品總監(jiān)“風(fēng)舞煙”講師主講,購買此課程提供VIP級顧問級服務(wù)
(即課程中的相關(guān)問題工作日內(nèi)可以即時得到解決)
二、講師介紹
中國科技大學(xué)計(jì)算機(jī)專業(yè),微軟認(rèn)證解決方案專家,10多年軟件行業(yè)從業(yè)經(jīng)驗(yàn),參與過數(shù)百萬的企業(yè)級ERP系統(tǒng)以及銀行系統(tǒng)項(xiàng)目設(shè)計(jì),在大數(shù)據(jù)處理、富客戶端技術(shù)、項(xiàng)目管理等方面有著深刻的理解和實(shí)戰(zhàn)經(jīng)驗(yàn),先后擔(dān)任過國內(nèi)某知名企業(yè)的CTO以及國內(nèi)知名IT高端培訓(xùn)機(jī)構(gòu)教學(xué)總監(jiān),北風(fēng)網(wǎng)資深簽約金牌講師,主編過BF-TECH系列的 .NET、J2EE、 Android等品牌就業(yè)課程,共達(dá)2000多課時,課程總時長超10萬分鐘,可謂IT在線視頻教育第一人,現(xiàn)任北風(fēng)網(wǎng)產(chǎn)品研發(fā)總監(jiān),對軟件系統(tǒng)架構(gòu)、企業(yè)解決方案及IT在線教育行業(yè)有著卓越的見解和遠(yuǎn)識。
三、課程介紹
3.1 關(guān)于ORM
一、什么是ORM
ORM,即Object-Relational Mapping(對象關(guān)系映射),它的作用是在關(guān)系型數(shù)據(jù)庫和業(yè)務(wù)實(shí)體對象之間作一個映射,這樣,我們在具體的操作業(yè)務(wù)對象的時候,就不需要再去和復(fù)雜的SQL語句打交道,只需簡單的操作對象的屬性和方法。
二、使用ORM的優(yōu)勢
優(yōu)勢一、 隱藏了數(shù)據(jù)訪問細(xì)節(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的缺點(diǎn)
第一:無可避免的,自動化意味著映射和關(guān)聯(lián)管理,代價(jià)是犧牲性能(早期,這是所有不喜歡ORM人的共同點(diǎn))?,F(xiàn)在的各種ORM框架都在嘗試使用各種方法來減輕這塊(LazyLoad,Cache),效果還是很顯著的。
第二:面向?qū)ο蟮牟樵冋Z言(X-QL)作為一種數(shù)據(jù)庫與對象之間的過渡,雖然隱藏了數(shù)據(jù)層面的業(yè)務(wù)抽象,但并不能完全的屏蔽掉數(shù)據(jù)庫層的設(shè)計(jì),并且無疑將增加學(xué)習(xí)成本.
第三:對于復(fù)雜查詢,ORM仍然力不從心。雖然可以實(shí)現(xiàn),但是不值的。視圖可以解決大部分calculated column,case ,group,having,order by, exists,但是查詢條件(a and b and not c and (d or d))。。。。。。
世上沒有驢是不吃草的(又想好又想巧,買個老驢不吃草),任何優(yōu)勢的背后都隱藏著缺點(diǎn),這是不可避免的。問題在于,我們是否能容忍缺點(diǎn)
3.2、幾種常見的ORM框架的比較
幾種常用框架的比較
以上就是市面上比較常見的.net ORM框架。其實(shí)比較完美的ORM框架應(yīng)該是滿足:
1.對象與數(shù)據(jù)庫的映射
2.對象緩存
3.可視化設(shè)計(jì)和代碼生成工具
4.支持多數(shù)據(jù)庫
5.動態(tài)查詢
6.延遲加載
7.非侵入式持久化
8.性能優(yōu)良
9.支持存儲過程和事務(wù)
10.多面向?qū)ο罂蚣苤С?nbsp;
ORM框架確實(shí)很方便,但發(fā)現(xiàn)也有其不足之處,比如多表聯(lián)合查詢,對視圖和存儲過程的處理不理想。整體性能低于面向SQL語句。
以上幾種框架比較常用的應(yīng)該是NHibernate,微軟的EF及MyBatis.NET和FluentData。
上述幾個框架各有優(yōu)缺點(diǎn)
如:NHibernate 師出名門,大名鼎鼎的Hibernate廠商出品的專門針對.NET的ORM框架,優(yōu)點(diǎn)是:功能強(qiáng)大,資料齊全,缺點(diǎn)是配置復(fù)雜,學(xué)習(xí)成本高
微軟的EF自然是在VS開發(fā)中首推的,優(yōu)點(diǎn)是和VS IDE集成很好,缺點(diǎn)是性能較NHiberte低,據(jù)說6.0后,性能明顯加強(qiáng),甚至于超過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è)計(jì)者 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 進(jìn)行自動生成。它不僅可以使用 SQL 來執(zhí)行查詢、增添和更新操作,還可以支持使用存儲過程和事務(wù)。根據(jù)文檔描述,F(xiàn)luentData 可以在不改動已有結(jié)構(gòu)的情況下,與任何業(yè)務(wù)對象一同工作。
以下是 FluentData 的一些其他特性:
· 多結(jié)果集(Multiple Result Set):在一次數(shù)據(jù)庫操作下返回多個數(shù)據(jù)集;
· 開發(fā)人員可使用強(qiáng)類型對象或動態(tài)對象;
· 可為創(chuàng)建時需要特殊處理的復(fù)雜對象自定義實(shí)體工廠(Custom Entity Factory);
· 具有添加其他數(shù)據(jù)庫支持的能力。
FluentData 需要 .NET 4.0,并支持 SQL Server、SQL Azure、SQL Server Compact 以及使用 .NET 驅(qū)動的 Oracle 和 MySQL。 想要了解進(jìn)一步信息,如代碼示例和免費(fèi)下載,請?jiān)L問CodePlex 站點(diǎn)上的 FluentData。(http://fluentdata.codeplex.com/)
3.4、課程培訓(xùn)目標(biāo):
1. 全面了解C# 4.5 語法新特性
2.全面深入了解什么是FluentData,以及如何使用FluentData結(jié)合.NET進(jìn)行數(shù)據(jù)庫應(yīng)用開發(fā)
3.通過實(shí)例融會貫通FluentData API語法,特性以及最佳開發(fā)實(shí)踐
3.5、適合學(xué)員
1.能夠熟練使用C#語法開發(fā)簡單數(shù)據(jù)庫應(yīng)用。
2.了解SQL語句,SQL Server或MySQL,Oracle中任一種即可
3.6、課程大綱
第一部分:C# 4.5新語法特性(LinQ、Lambda表達(dá)式等)
![]()
第二部分:FluentData輕量級.NET ORM持久化技術(shù)詳解
![]()
四、課程部分內(nèi)容截圖
![]()