日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Dapper 介绍

發布時間:2025/3/15 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Dapper 介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?轉載:http://***/html/itweb/20130918/125194_125199_125210.htm

.NET 輕量級 ORM 框架 - Dapper 介紹

?

Dapper簡單介紹:

Dapper is a?single file?you can drop in to your project that will extend your?IDbConnection?interface.

Dapper是一個輕型的開源ORM類,代碼就一個SqlMapper.cs文件,編譯后就40多K的一個很小的Dll. 官方資料:點擊這里

Dapper支持Mysql,SqlLite,Mssql2000,Mssql2005,Oracle等一系列的數據庫,當然如果你知道原理也可以讓它支持Mongo db

Dapper的r支持多表并聯的對象。支持一對多 多對多的關系。并且沒侵入性,想用就用,不想用就不用。無XML無屬性。代碼以前怎么寫現在還怎么寫。

Dapper原理通過Emit反射IDataReader的序列隊列,來快速的得到和產生對象。性能提升了很多;(比采用常規的反射)

Dapper支持net2.0,3.0,3.5,4.0。不過就是要配置下。如果不知道如何配置查看我博客里的在2.0下使用3.5就可以了。

語法十分簡單。并且無須遷就數據庫的設計。

Dapper執行效率:

?

30W條數據,取其中的一個對象,和第一頁前15條數據,耗時0.0906879秒。這個速度超過Datable。

官方的測試代碼以及數據

Performance of?SELECT?mapping over 500 iterations - POCO serialization

MethodDurationRemarks
Hand coded (using a?SqlDataReader)47ms
Dapper?ExecuteMapperQuery<Post>49ms
PetaPoco52msCan be faster
BLToolkit80ms
SubSonic?CodingHorror107ms
NHibernate SQL104ms
Linq 2 SQL?ExecuteQuery181ms
Entity framework?ExecuteStoreQuery631ms

Performance of?SELECT?mapping over 500 iterations - dynamic serialization

MethodDurationRemarks
Dapper?ExecuteMapperQuery (dynamic)48ms
Massive52ms
Simple.Data95ms

Performance of?SELECT?mapping over 500 iterations - typical usage

MethodDurationRemarks
Linq 2 SQL?CompiledQuery81msNot super typical involves complex code
NHibernate HQL118ms
Linq 2 SQL559ms
Entity framework859ms
SubSonic?ActiveRecord.SingleOrDefault3619ms

Dapper使用介紹:

如果你使用的是vs2012,可以使用NuGet來進行安裝,會自動添加引用,使用時寫入命名空間即可;

 

 using Dapper;

?

下面的代碼可以作為使用參考:

public?static?readonly?string?sqlconnectionString =?"Data Source=xxx;Initial Catalog=Express;User ID=sa;Password=123";

?
public?static?readonly?string?mysqlconnectionString =?@"server=xxx;database=dddd;uid=xxx;pwd=123;charset='gbk'";
?
public?static?SqlConnection SqlConnection()
{
????var connection =?new?SqlConnection(sqlconnectionString);
????connection.Open();
????return?connection;
}
?
public?static??MySqlConnection? MySqlConnection()
{
????var connection =?new?MySqlConnection(mysqlconnectionString);
????connection.Open();
????return?connection;

}

調用方法

?

?

SqlConnection connection = Program.SqlConnection();

?

?

獲得一個實體對象

var d = connection.Query<Dog>("select * from dog where id = 1",?null).Single<Dog>();

獲得實體對象結合

var dd = connection.Query<Dog>("select * from dog where id < 10", null).ToList<Dog>();

插入數據

//動態參數 connection.Execute("INSERT INTO dog (Age,Name,Weight) VALUES (@age,@name,@Weight)", new { @age = i,@name = Guid.NewGuid().ToString(), @Weight = i }); //直接傳入實體 connection.Execute("INSERT INTO dog (Age,Name,Weight) VALUES (@age,@name,@Weight)",model);

?

Execute a query and map the results to a strongly typed ListNote: all extension methods assume the connection is already open, they will fail if the connection is closed.public static IEnumerable<T> Query<T>(this IDbConnection cnn, string sql, object param = null, SqlTransaction transaction = null, bool buffered = true)Example usage:publicclassDog{publicint?Age{get;set;}publicGuidId{get;set;}publicstringName{get;set;}publicfloat?Weight{get;set;}publicintIgnoredProperty{get{return1;}}} var guid =Guid.NewGuid();var dog = connection.Query<Dog>("select Age = @Age, Id = @Id",new{Age=(int?)null,Id= guid });dog.Count().IsEqualTo(1);dog.First().Age.IsNull();dog.First().Id.IsEqualTo(guid);Execute a query and map it to a list of dynamic objectspublic static IEnumerable<dynamic> Query (this IDbConnection cnn, string sql, object param = null, SqlTransaction transaction = null, bool buffered = true)This method will execute SQL and return a dynamic list.Example usage:var rows = connection.Query("select 1 A, 2 B union all select 3, 4");((int)rows[0].A).IsEqualTo(1);((int)rows[0].B).IsEqualTo(2);((int)rows[1].A).IsEqualTo(3);((int)rows[1].B).IsEqualTo(4);Execute a Command that returns no resultspublic static int Execute(this IDbConnection cnn, string sql, object param = null, SqlTransaction transaction = null)Example usage:connection.Execute(@"set nocount on create table #t(i int) set nocount off insert #t select @a a union all select @b set nocount on drop table #t",new{a=1, b=2}).IsEqualTo(2);Execute a Command multiple timesThe same signature also allows you to conveniently and efficiently execute a command multiple times (for example to bulk-load data)Example usage:connection.Execute(@"insert MyTable(colA, colB) values (@a, @b)",new[]{new{ a=1, b=1},new{ a=2, b=2},new{ a=3, b=3}}).IsEqualTo(3);// 3 rows inserted: "1,1", "2,2" and "3,3"This works for any parameter that implements IEnumerable<T> for some T.

?

?

?

?

var dd = connection.Query<Dog>("select * from dog where id < 10",?null).ToList<Dog>();

轉載于:https://www.cnblogs.com/hanjun0612/p/9779879.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的Dapper 介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲一区二区偷拍 | 欧美一级爆毛片 | 狠狠艹视频 | 波多野结衣导航 | 欧美一区二区三区四区视频 | 黄色特级视频 | 开心激情播播网 | 天堂在线成人 | 黄色片aa | 国产aa| 国产日韩欧美激情 | www久久久久 | 成人在线观看www | 精品久久久久久久久久久国产字幕 | 日韩精品乱码久久久久久 | 91插插插插 | 亚洲色婷婷一区二区三区 | 欧美一区二区视频在线观看 | 日韩在线小视频 | 黄色a在线观看 | av无码精品一区二区三区宅噜噜 | 日韩在线视频一区二区三区 | 91大神在线观看视频 | 蜜桃久久久 | 日韩新片王网 | 欧美人妖xxxx | 国产福利视频网站 | 波多野结衣理论片 | 久久久久99 | 国产特级aaaaaa大片 | www.狠狠| 国产精品视频一区在线观看 | 亚洲av色区一区二区三区 | 欧美处女 | 精品国偷自产国产一区 | 噼里啪啦免费看 | 天天躁夜夜躁 | 婷婷在线看 | 91麻豆精品视频 | 黄色大片aa| 深田咏美中文字幕 | 国产精品成人久久久久久久 | 久久综合久色欧美综合狠狠 | 国产女人精品视频 | 日韩毛片高清在线播放 | 国产吞精囗交免费视频 | 网址av| 伊人伊人网 | 国产主播第一页 | 少妇又白又嫩又色又粗 | 最新中文字幕第一页 | 精品人妻二区中文字幕 | 人人妻人人澡人人爽欧美一区 | 青青视频免费看 | 殴美性生活| 欧美精品首页 | 久久大尺度 | sese亚洲 | 九色蝌蚪91 | 97国产精品视频 | 性xxxxbbbb | 色视频线观看在线播放 | 丁香婷婷六月天 | 国内国产精品天干天干 | 日本大奶子视频 | 91成人免费电影 | 国产妇女馒头高清泬20p多 | 肉性天堂 | 日本精品视频在线播放 | mm1313亚洲精品| 天天天综合网 | 久久久精品国产sm调教网站 | 久久妇女 | 日韩电影网站 | 国产精品久久久久久久久久东京 | 日日操夜夜操狠狠操 | 欧美在线高清 | 欧美日韩精品一区二区三区蜜桃 | 欧美日韩一区在线 | 免费看黄色一级片 | 黄色网络在线观看 | 男生插女生网站 | 国产一区视频在线播放 | 国产青青视频 | 亚洲性大片 | 二区免费视频 | 玖草在线视频 | 97自拍视频| 在线观看99 | 日本精品久久久久中文字幕 | 99久久精品免费看国产交换 | 亚洲av人人澡人人爽人人夜夜 | 光棍福利视频 | 日日摸天天添天天添破 | 偷拍视频一区二区 | 一区二区网站 | 国产做受69 | www.黄在线| 一区二区三区四区不卡 |