公司项目数据库访问采用的dapper,以前没有用过。今天简单的测试下了,dapper和dbentry 查询效率情况。
public ActionResult Test() { Sys_UserFacade su = new Sys_UserFacade(); var result = string.Empty; System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); var list = su.GetSys_UserList(); sw.Stop(); result += "Dapper:查询" + list.Count() + "条数据耗时" + sw.ElapsedMilliseconds + "毫秒 "; sw.Reset(); sw.Start(); var list2 = SysUser.Find(u=>u.LoginCount==2); sw.Stop(); result += "Vs Dbentry:" + list2.Count() + "条数据耗时" + sw.ElapsedMilliseconds + "毫秒<hr/>"; return Content(result); }
sql 2012 ,本机,140W+数据,进行了简单的全表查询,和条件查询。执行效率如下:
Dapper:查询1408128条数据耗时7474毫秒 Vs Dbentry:1408064条数据耗时6370毫秒 |
Dapper:查询1408128条数据耗时7372毫秒 Vs Dbentry:1408064条数据耗时6453毫秒 |
Dapper:查询1408128条数据耗时7423毫秒 Vs Dbentry:1408064条数据耗时6466毫秒 |
Dapper:查询1408128条数据耗时7288毫秒 Vs Dbentry:1408064条数据耗时6646毫秒 |
Dapper:查询1408128条数据耗时7172毫秒 Vs Dbentry:1408064条数据耗时6667毫秒 |
Dapper:查询128条数据耗时50毫秒 Vs Dbentry:128条数据耗时30毫秒 |
Dapper:查询128条数据耗时47毫秒 Vs Dbentry:128条数据耗时29毫秒 |
Dapper:查询128条数据耗时42毫秒 Vs Dbentry:128条数据耗时30毫秒 |
Dapper:查询128条数据耗时41毫秒 Vs Dbentry:128条数据耗时38毫秒 |
Dapper:查询128条数据耗时44毫秒 Vs Dbentry:128条数据耗时29毫秒 |
总结:两个效率差不多,dbentry 略胜一点。
今天使用dapper时候遇到一个小问题,数据库连接字符串在web.config配置如下
<connectionStrings>
<add name="SmDbConnectionString" connectionString="Data Source=(local);Initial Catalog=***;User ID=xxx;Password=xxxx" providerName="System.Data.SqlClient" />
</connectionStrings>
在程序中采用
cnnStringName = ConfigurationManager.ConnectionStrings[0].Name;
访问连接字符串名,发现返回的连接名并不是想要的。而是继承了Machine.config中的连接。
解决办法:
1:在web.config connectionStrings节点中先添加个 <clear/>
2:或者直接ConfigurationManager.ConnectionStrings[1]