给力分享新的ORM => Dapper( 转)

出处:http://www.cnblogs.com/sunjie9606/archive/2011/09/16/2178897.html

最近一直很痛苦,想选一个好点的ORM来做项目,实在没遇到好的。昨天忽然的看到Dapper,立刻迷恋上了。这个ORM实在太强大了,可惜资料少的可怜。就发点资料来介绍吧。官方资料点击这里

Dapper是一个轻型的ORM类。代码就一个SqlMapper.cs文件。文件见下。编译后就40K的一个很小的Dll.(估计其他的ORM要哭了。)

Dapper很快,有多快。实验下就知道了。官方给了点测试包,想玩的时候就去测试下。Dapper的速度接近与IDataReader,取列表的数据超过了DataTable。(更多的ORM泪奔了,好多ORM弱爆了。)

Dapper支持什么数据库。Dapper支持Mysql,SqlLite,Mssql2000,Mssql2005,Oracle等一系列的数据库,当然如果你知道原理也可以让它支持Mongo
db.(有的ORM泪奔了)

Dapper的r支持多表并联的对象。支持一对多
多对多的关系。并且没侵入性,想用就用,不想用就不用。无XML无属性。代码以前怎么写现在还怎么写。(更更更更多的ORM泪奔了,看到其他的ORM又是XML又是属性,Map来Map去,设计来设计去,缓存来缓存去,然后还是那么的慢。)

Dapper原理通过Emit反射IDataReader的序列队列,来快速的得到和产生对象。性能实在高高高。(更更更更更更更多的ORM泪奔了)

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

Dapper的语法是这样的。语法十分简单。并且无须迁就数据库的设计。(我X,无敌了)




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();




 





for
(int
i = 0; i < 100000; i++)





{





    //connection.Execute("INSERT INTO dog (Age,Name,Weight) VALUES (@age,@name,@Weight)",





       //  new { @age = i,@name = Guid.NewGuid().ToString(), @Weight = i });





}




 





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>();

试用感觉

30W条数据,取其中的一个对象,和第一页前15条数据,耗时0.0906879秒。这个速度超过Datable。

官方的测试代码以及数据

Performance
of SELECT
mapping over 500 iterations - POCO serialization







































Method Duration Remarks
Hand
coded (using a SqlDataReader)
47ms
Dapper
ExecuteMapperQuery<Post>
49ms
PetaPoco 52ms Can
be faster
BLToolkit 80ms
SubSonic
CodingHorror
107ms
NHibernate
SQL
104ms
Linq
2 SQL ExecuteQuery
181ms
Entity
framework ExecuteStoreQuery
631ms

Performance
of SELECT
mapping over 500 iterations - dynamic serialization



















Method Duration Remarks
Dapper
ExecuteMapperQuery
(dynamic)
48ms
Massive 52ms
Simple.Data 95ms

Performance
of SELECT
mapping over 500 iterations - typical usage



























Method Duration Remarks
Linq
2 SQL CompiledQuery
81ms Not
super typical involves complex code
NHibernate
HQL
118ms
Linq
2 SQL
559ms
Entity
framework
859ms
SubSonic
ActiveRecord.SingleOrDefault
3619ms

Performance benchmarks are available here: http://code.google.com/p/dapper-dot-net/source/browse/Tests/PerformanceTests.cs
, Feel free to submit patches that include other ORMs -
when running
benchmarks, be sure to compile in Release and not attach a debugger (ctrl
F5)

内存控制 非常好。

结论不管你用不用,我反正是用它了。

我编译好了一份发上来了。点击下载。代码如下有点长

给力分享新的ORM => Dapper( 转),布布扣,bubuko.com

时间: 2024-10-13 23:27:27

给力分享新的ORM => Dapper( 转)的相关文章

搭建一套自己实用的.net架构(3)续 【ORM Dapper+DapperExtensions+Lambda】

前言 继之前发的帖子[ORM-Dapper+DapperExtensions],对Dapper的扩展代码也进行了改进,同时加入Dapper 对Lambda表达式的支持. 由于之前缺乏对Lambda的知识,还是使用了拿来主义.研究了些案例,总归有些问题: 1.只能生成sql.不能将值进行参数化. 2.lambda解析的代码对sql语法的多样式支持不够 3.不开源,反编译后发现可扩展性不强. 最后选择了Dos.ORM(lambda支持的很好,开源的),在这里尊重原创,大家有兴趣去支持下哈. [作者博

使用轻量级ORM Dapper进行增删改查

  项目背景 前一段时间,开始做一个项目,在考虑数据访问层是考虑技术选型,考虑过原始的ADO.NET.微软的EF.NH等.再跟经理讨论后,经理强调不要用Ef,NH做ORM,后期的sql优化不好做,公司也没有人对EF,Nh 等orm优化比较熟悉的.强调说的,我们的项目要做的得简单,可以使用ADO.NET 写原始的sql.但我自己还是喜欢ORM的,它可以提高数据访问层的开发.有一天,在订阅张善友 doNet跨平台微信公众号里,看到Dapper的推荐.了解之后,我自己喜欢喜欢Dapper,可以满足我这

悦点引领P2P分享新潮流

开车不喝酒,喝酒不开车,这句话现在已经耳熟能详了:随着对酒驾的处罚越来越严厉,代驾业务在各个城市如雨后春笋般的冒了出来,代驾司机也成为了一个新型职业,成为人们工作谋生的一种选择.代驾APP,已经成为紧跟打车软件,中国O2O落地最快最普及的APP实用工具之一.代驾司机人手一部手机,用于接单,计价,结算等相关代驾操作.由上海悦点信息科技有限公司开发的悦驾APP在众多代驾类APP中不仅解决了代驾相关的O2O应用,同时引入了拼车的P2P分享应用:是同时涵盖了O2O应用和P2P分享的一款实用的APP.在具

[干活分享] 新媒体时代,论问答营销策略的重要性!

问答营销属于互动营销新型营销方式,是互动营销介于第三方口碑而创建的网络营销方式之一,营销方式既能与潜在消费者产生互动,又能植入商家广告,是做品牌口碑.互动营销不错的营销方式之一.遵守问答站点(百度,天涯等)的发问或回答规则.然后巧妙地运用软文,让自己的产品.服务植入问答里面,达到第三方口碑效应. 互动营销具有以下特点: 人气较旺.话题新颖.争议性强.具有时代感: 这个平台是一个可以令信息迅速扩张的平台: 可以全方位的展示你的产品或者公司信息: 可以和客户零距离的接触: 问答营销顾名思义就是以问和

数据统计分享|新社汇·社圈“文旅+”企业家内蒙古草原自驾行活动

每年7月-9月份这三个月是内蒙古草原上气候温和时节也是草原旅游的最佳时间段,且牛羊成群在草原上可以真正感受到"风吹草低见牛羊"的意境,而且这段时间草原上还有各种各样的活动盛会,非常热闹. "开放 同心 共享 链接 双赢"是新社汇·社圈的中心文化,社圈以弘扬中国传统的"局·文化"为目标,聚合一批"志同道合"各行业企业家朋友,在充分发挥自身资源优势基础上,为社圈内的企业家朋友提供一个开放.积极.多源的交流平台. 恰逢即将进入内蒙古

SEO的情链接全攻略给力分享

http://www.worlduc.com/blog2012.aspx?bid=36992517http://www.worlduc.com/blog2012.aspx?bid=36992593http://www.worlduc.com/blog2012.aspx?bid=36993019http://www.worlduc.com/blog2012.aspx?bid=36993115http://www.worlduc.com/blog2012.aspx?bid=36993578http:

[ASP.Net] 20141228_Dapper文章搜集

DbHelperSQL和Dapper数据访问的性能对比 给力分享新的ORM => Dapper 分享一个轻型ORM--Dapper选用理由

[最新].NET Core ORM 开源项目一览,持续更新

原文:[最新].NET Core ORM 开源项目一览,持续更新 截至2019-05-08共收集27个 .NET Core ORM 开源项目,38个 .NET ORM 开源项目. .NET Core ORM 开源项目收集地址:https://github.com/orm-core-group .NET ORM 开源项目收集地址:https://github.com/orm-group 如有遗漏,欢迎引荐!!! 项目名称 项目描述 代码仓库地址 Insight.Database Fast, lig

9步玩转新媒体平台,你,中枪了吗?

新媒体运营的两个现状:1.用户对你的内容毫不在乎,毫无反应:2.你的信息引起了他们的注意,但很难与你产生连接,更莫提消费你的商品服务,可能只是因为一个标题或者一张美图而被你吸引而已. 驭爷今天跟大家分享怎么做好新媒体营销,这是第一次分享新媒体话题,有请各路新媒体英雄前来扶正,感激不尽! 大家为什么对你的内容毫无兴趣 过去,我们处在广播.报纸杂志和电视等传统媒体的时代,我们被动接收信息(包括广告),只为没有选择: 昨天,我们处在用数据说话的邮件和搜索引擎优化时代,营销人员开始会给咱们投递他们认为我