大家好克滴,我是大成子。今天學(xué)習(xí)ORM框架之dapper
介紹
dapper是一個簡單的對象關(guān)系映射框架(ORM----Object Relation Mapping)熄驼,它幾乎與原始的ADO.NET 數(shù)據(jù)操作讀取一樣快(反正我ado.net已經(jīng)忘完了╥__╥像寒,以前用的最多是linq to sql和ef,不需要寫sql語句瓜贾,使用linq操作數(shù)據(jù)源)诺祸,它負(fù)責(zé)數(shù)據(jù)庫與編程語言之間的映射。
與EF的優(yōu)劣
EF-------重量級ORM的代表
優(yōu)點:
面向?qū)ο笫讲僮鲾?shù)據(jù)庫祭芦。
完全擺脫SQL 語句序臂,不用關(guān)心SQL如何寫,可移植性強实束。
支持code first,開發(fā)人員可以完成且無需關(guān)心數(shù)據(jù)庫逊彭,代碼先行咸灿,極大節(jié)省開發(fā)成本。
結(jié)合LINQ侮叮,開發(fā)效率高避矢。
跨數(shù)據(jù)庫,易配置。
與VS結(jié)合較好审胸。
缺點:
比較復(fù)雜亥宿,學(xué)習(xí)曲線復(fù)雜(官方文檔豐富且雜)。
不適合做統(tǒng)計查詢(因為統(tǒng)計查詢需要執(zhí)行查詢效率高)砂沛。
對于多表查詢或一些復(fù)雜的查詢實現(xiàn)較為困難和復(fù)雜烫扼。
自動生成的SQL語句復(fù)雜,效率低碍庵。
EF的Context上下文不是線程安全的(知識有限映企,不懂)。
包和插件較為冗余(對于中小型項目來說)静浴,性能一般堰氓。
Dapper--------輕量級ORM的代表
優(yōu)點:
開源,輕巧(輕量級)苹享,編譯后文件簡單且小巧双絮。
支持主流數(shù)據(jù)庫,MSSQL,MySQL,Oracle得问。
執(zhí)行效率高囤攀。
學(xué)習(xí)較為方便。
缺點:
半自動ORM椭赋,需要開發(fā)人員自己寫實體類┭┮﹏┭┮(可以借助實體類生成工具生成)抚岗。
開發(fā)時間成本高,LINQ支持較弱哪怔。
維護(hù)成本高宣蔚,不支持Code first,開發(fā)人員除了要維護(hù)數(shù)據(jù)庫中的表认境,還需要維護(hù)代碼表中的映射對象胚委。
Dapper安裝
Nuget包安裝管理器搜索,安裝最新版本即可叉信。
Dapper方法
Dapper使用以下幾個方法擴展了我們的IDbConnection接口
Execute
Query
QueryFirst
QueryFirstOrDefault
QuerySingle
QuerySingleOrDefault
QueryMultiple
Execute
可執(zhí)行存儲過程亩冬、增、刪硼身、改等操作硅急。
此處以插入為例
MySqlConnection實現(xiàn)了DbConnection接口,當(dāng)數(shù)據(jù)庫發(fā)生改變時佳遂,可進(jìn)行更改营袜。
插入(單、多)丑罪,更新(單荚板、多)凤壁,刪除(單,多)均使用此方法
Query
Dapper Contrib插件
它是額外的插件跪另,在dapper的基礎(chǔ)上進(jìn)一步封裝了些許操作拧抖,使開發(fā)更為方便。
安裝包之后免绿,即可使用唧席。
數(shù)據(jù)注釋
ExplicitKey和Computed這兩個屬性后面遇到再闡述
基本方法
今日總結(jié),皆為初步學(xué)習(xí)针姿,有很多方法沒有涉及到袱吆,具體后期在實踐中總結(jié)。更多請關(guān)注我的微信公眾號:dotNET學(xué)習(xí)天地? ?一起學(xué)習(xí)和進(jìn)步距淫。