一、ORM
ORM(Object-relational mapping),即對象關系映射,是一種為了解決面向對象與關系數據庫存在的互不匹配的現象的技術。也就是說,ORM是通過使用描述對象和數據庫之間映射的元數據(映射文件信息),將程序中的對象自動持久化到關系數據庫中。
二、為什么使用ORM
我們知道后台操作數據庫,通常是原生的ado.net,需要寫sql語句,每一次執行,都要打開/關閉數據連接,這樣在開發的過程是很麻煩的,而且開發效率低。為了解決這個問題,ORM也就順勢而生了,
優點如下:
1、操作簡單,挺高開發效率。
2、數據訪問更抽象,更輕便
3、支持面向對象封裝
缺點如下:
1、執行性能低,自動化進行關系數據庫的映射需要消耗系統性能
2、在處理多表聯查、where條件復雜之類的查詢時,ORM的語法會變得復雜
3、開發思維容易固定化,
三、常用ORM框架
SqlSugar
SqlSugar是國人開發者開發的一款基於.NET的ORM框架,是可以運行在.NET 4.+ & .NET CORE的高性能、輕量級 ORM框架,眾多.NET框架中最容易使用的數據庫訪問技術。
特點:
- 開源、免費
- 國內開發者開發、維護;
- 支持.NET Core;
- 支持主流數據庫,如:SQL Server,MySql,Oracle,Sqlite等;
- 維護更新及時
Entity Framework (EF)
ADO.NET Entity Framework 是微軟以 ADO.NET 為基礎所發展出來的對象關系對應 (O/R Mapping) 解決方案。該框架曾經為.NET Framework的一部分,但version 6之后從.NET Framework分離出來。EF是vs自帶功能,使用起來更方便,開發效率更高,只是執行性能一般,對於大數據量不合適。
NHibernate
NHibernate是一個面向.NET環境的對象/關系數據庫映射工具。對象/關系數據庫映射(object/relational mapping,ORM)這個術語表示一種技術,用來把對象模型表示的對象映射到基於SQL的關系模型數據結構中去。這個是從Java移植過來的框架,配置有些麻煩,學習起來時間成本也比較大。
特點:
- 開源、免費
- 批量寫入
- 批量讀/多重查詢特性(我理解是在說Future?)
- 批量的集合加載
- 帶有lazy="extra"的集合
- 集合過濾器和分頁集合
- 二級緩存(實際上NH的二級緩存貌似也很簡單?)
- 集成和擴展性
- 代碼自動生成,減少代碼和sql的開發量,使開發人員擺脫開sql,ado.net和事務,緩存等底層
Dapper
Dapper是一款輕量級ORM工具(Github)。如果你在小的項目中,使用Entity Framework、NHibernate 來處理大數據訪問及關系映射,未免有點殺雞用牛刀。你又覺得ORM省時省力,這時Dapper 將是你不二的選擇。
- 輕量。只有一個文件(SqlMapper.cs),編譯完成之后只有120k(好象是變胖了)
- 速度快。Dapper的速度接近與IDataReader,取列表的數據超過了DataTable。
- 支持多種數據庫。Dapper可以在所有Ado.net Providers下工作,包括sqlite, sqlce, firebird, oracle, MySQL, PostgreSQL and SQL Server
- 可以映射一對一,一對多,多對多等多種關系。
- 性能高。通過Emit反射IDataReader的序列隊列,來快速的得到和產生對象,性能不錯,僅次於原生ado.net。
- 支持FrameWork2.0,3.0,3.5,4.0,4.5
以上四種ORM框架是常用的,在日常開發中會經常遇到,大家可以學習一下,在具體項目中,使用是用哪個框架要按照實際項目需要進行分析規划。之后我會對以上四種ORM框架具體寫demo分析。
