標籤:關聯式資料庫 技術 通用 開發 講師
課程講師:風舞煙
課程分類:.NET架構
適合人群:初級
課時數量:19課時
更新程度:完成
服務類型:C類(普通服務類課程)
用到技術:FluentData
涉及項目:FluentData輕量級
需要更多相關資料可以聯絡 Q2748165793
課程介紹
3.1 關於ORM
一、什麼是ORM
ORM,即Object-RelationalMapping(對象關係映射),它的作用是在關係型資料庫和業務實體物件之間作一個映射,這樣,我們在具體的操作業務對象的時候,就不需要再去和複雜的SQL語句打交道,只需簡單的操作對象的屬性和方法。
二、使用ORM的優勢
優勢一、隱藏了資料訪問細節,“封閉”的通用資料庫互動,ORM的核心。他使得我們的通用資料庫互動變得簡單易行,並且完全不用考慮該死的SQL語句。快速開發,由此而來。
優勢二、ORM使我們構造固化資料結構變得簡單易行
在ORM年表的史前時代,我們需要將我們的物件模型轉化為一條一條的SQL語句,通過直連或是DBhelper在關聯式資料庫構造我們的資料庫體系。而現在,基本上所有的ORM架構都提供了通過物件模型構造關聯式資料庫結構的功能。這,相當不錯。
三、使用ORM的缺點
第一:無可避免的,自動化意味著映射和關聯管理,代價是犧牲效能(早期,這是所有不喜歡ORM人的共同點)。現在的各種ORM架構都在嘗試使用各種方法來減輕這塊(LazyLoad,Cache),效果還是很顯著的。
第二:物件導向的查詢語言(X-QL)作為一種資料庫與對象之間的過渡,雖然隱藏了資料層面的業務抽象,但並不能完全的屏蔽掉資料庫層的設計,並且無疑將增加學習成本.
第三:對於複雜查詢,ORM仍然力不從心。雖然可以實現,但是不值的。視圖可以解決大部分calculated column,case,group,having,order by, exists,但是查詢條件(a and b and not c and (d ord))。。。。。。
世上沒有驢是不吃草的(又想好又想巧,買個老驢不吃草),任何優勢的背後都隱藏著缺點,這是不可避免的。問題在於,我們是否能容忍缺點
3.2、幾種常見的ORM架構的比較
幾種常用架構的比較
以上就是市面上比較常見的.netORM架構。其實比較完美的ORM架構應該是滿足:
1.對象與資料庫的映射
2.對象緩衝
3.可視化設計和代碼產生工具
4.支援多資料庫
5.動態查詢
6.消極式載入
7.非侵入式持久化
8.效能優良
9.支援預存程序和事務
10.多物件導向架構支援
ORM架構確實很方便,但發現也有其不足之處,比如多表聯集查詢,對視圖和預存程序的處理不理想。整體效能低於面向SQL語句。
以上幾種架構比較常用的應該是NHibernate,微軟的EF及MyBatis.NET和FluentData。
上述幾個架構各有優缺點
如:NHibernate師出名門,大名鼎鼎的Hibernate廠商出品的專門針對.NET的ORM架構,優點是:功能強大,資料齊全,缺點是配置複雜,學習成本高
微軟的EF自然 是在VS開發中首推的,優點是和VSIDE整合很好,缺點是效能較NHiberte低,據說6.0後,效能明顯加強,甚至於超過NHibernate,但本人未測,另外,對其他資料庫的支援需要安裝第三方外掛程式,還有個人感覺也過於寵大,使用起來,不夠靈活。MyBatic.NET功能和易用性介於NHibernate與EF之間。
相比較而言,我們更推薦使用FluentData,一個輕量級開源的.NETORM資料持久化架構
3.3、什麼是FluentData?
FluentData:一種使用FluentAPI的新型輕量級ORM模型
FluentData 是微型 ORM(micro-ORM)家族的一名新成員,旨在比大型ORM(full ORM)更加易用。FluentData 於本月推出,它使用 fluent API 並支援 SQLServer、SQL Azure、Oracle 和MYSQL。
FluentData 的設計者 Lars-Erik Kindblad談到:
當前市面上的 ORM 架構,如 Entity Framework 和NHibernate,都過於複雜而且難於學習。此外,由於這些架構自身抽象的查詢語言以及從資料庫到 .NET對象的映射太過麻煩,導致它們產生的 SQL 都很低效。
FluentData 另闢蹊徑,它是一個輕量級架構,擁有簡單的 fluent API並且很容易學會。
與其他微型 ORM(如 Dapper 和 Massive)類似,FluentData關注效能和易用性。它允許開發人員擁有對 SQL 較多的控制,而不是依賴 ORM 進行自動產生。它不僅可以使用 SQL來執行查詢、增添和更新操作,還可以支援使用預存程序和事務。根據文檔描述,FluentData可以在不改動已有結構的情況下,與任何業務對象一同工作。
以下是 FluentData的一些其他特性:
·多結果集(Multiple ResultSet):在一次資料庫操作下返回多個資料集;
·開發人員可使用強型別對象或動態對象;
·可為建立時需要特殊處理的複雜物件自訂實體工廠(Custom EntityFactory);
·具有添加其他資料庫支援的能力。
FluentData 需要 .NET 4.0,並支援 SQL Server、SQLAzure、SQL Server Compact 以及使用 .NET 驅動的 Oracle 和 MySQL。想要瞭解進一步資訊,如程式碼範例和免費下載,請訪問CodePlex 網站上的FluentData。(http://fluentdata.codeplex.com/)
3.4、課程培訓目標:
1.全面瞭解C# 4.5 文法新特性
2.全面深入瞭解什麼是FluentData,以及如何使用FluentData結合.NET進行資料庫應用開發
3.通過執行個體融會貫通FluentDataAPI文法,特性以及最佳開發實踐
3.5、適合學員
1.能夠熟練使用C#文法開發簡單資料庫應用。
2.瞭解SQL語句,SQLServer或MySQL,Oracle中任一種即可
FluentData 輕量級.NET ORM持久化技術詳解(C#4.5/Linq/Lambda,事務/儲存過程,開源架構)