当前位置: 首页 > news >正文

云南省网站建设公司银川如何做百度的网站

云南省网站建设公司,银川如何做百度的网站,德州手机网站建设,网站平台建设实训总结在.NET Framework下有许多ORM框架#xff0c;最著名的无外乎是Entity Framework#xff0c;它拥有悠久的历史以及便捷的语法#xff0c;在占有率上一路领先。但随着Dapper的出现#xff0c;它的地位受到了威胁#xff0c;本文对比了在.NET Core下 两种框架的表现以及与原生… 在.NET Framework下有许多ORM框架最著名的无外乎是Entity Framework它拥有悠久的历史以及便捷的语法在占有率上一路领先。但随着Dapper的出现它的地位受到了威胁本文对比了在.NET Core下 两种框架的表现以及与原生的ADO.NET 的对比。 1.1. Dapper是什么 Dapper是.NET的简单对象映射器在速度方面拥有微型ORM之王的称号几乎和使用原始ADO.NET数据读取器一样快。 ORM是一个对象关系映射器它负责数据库和编程语言之间的映射。Dapper是通过对IDbConnection接口的扩展来操作数据库的。 1.2. 为什么选择Dapper 1.2.1. Dapper和Entity Framework Core的比较 体积 Dapper近来越来越受到开发者们的青睐得益于它的小巧轻便 名称 包大小 语法支持 Dapper 165kb Sql Dapper Contrib 50kb 方法 EntityFramework Core 1M Sql和Linq 从语法的支持来看EntityFrameworkCore更具优势Linq编写时能获取开发工具更友好的提示相比直接写sql字符串更早的知道哪里出现错误。 性能比较 这里笔者使用了两台计算机都为台式机一台为Mysql数据库Mysql版本5.7.20服务器另一台为程序服务器。两台服务器的配置如下 服务器 操作系统 内存 处理器 内核 MySql数据库 windows 10 64bit 16G i7 8核 程序服务器 windows 10 64bit 8G i3 4核 以下是对5002条数据的查询测试测试时分两种情况第一种是在预热的情况下查询第二种是在不预热的情况下执行查询查询时用三种操作数据库的方式第一个是用原生的ADO.Net、第二个是微软提供的Entity Framework、第三个是Dapper其中又使用Dapper使用Sql和方法的方式进行查询数据库分别对四种不种的情况进行查询 通过500次循环每次获取一条数据并且将数据映射成POCO所花费的总时间 通过500次循环每次获取一条数据并且将数据映射为动态对象所花费的总时间 一次性取出5000条实际为5002数据并且将数据映射成POCO所花费的总时间 一次性取出5000条实际为5002数据并且将数据映射成动态对象所花费的总时间 为了让数据更真实一点预热和不预热的情况分别执行了多次每种情况超过10次以下为笔者分别取其中两次其它情况基本相似 预热情况 不预热 从上面测试结果可以得出速度由快到慢 1. 循环获取单条数据 ADO≈Dapper Query(Buffered)≈Dapper Query(First Or Default)≈Dapper ContribEntity FrameworkDapper Query(Non Buffered) 2. 一次性获取5000多条数据 一次性获取整张表的数据性能比较接近 连接信息 下面是用WireShark分别对几种情况连接数据时抓取数据 ADO.Net Entity Framework: Dapper (Non Buffered) Dapper (First Or Default) Dapper(Buffered) 从以上面图中可以得出以下结论 ADO.Net、Dapper(Buffered)、Dapper(First Or Default)、Dapper(Non Buffered)、Dapper Contrib在建立连接到第一次取数据的时候是一样的所以效率上它们之间差不多 Entity Framework在第一次获取数据慢是因为作了一次重连 Dapper (Non Buffered)在500次循环获取数据时速度最慢是因为每次请求完成以后它都会释放连接下次请求时再建立连接 生成Sql语句 Dapper object param new { Id Id };         return conn.QueryPost(select * from Posts where IdId, param, buffered: true).First(); 生成的Sql select * from Posts where Id 501 Entity Framework ctx.Posts.FirstOrDefault(p p.Id Id) as Post; 生成的Sql语句 SELECT p.Id, p.Counter1, p.Counter2, p.Counter3, p.Counter4, p.Counter5, p.Counter6, p.Counter7, p.Counter8, p.Counter9, p.CreationDate, p.LastChangeDate, p.TextFROM Posts AS pWHERE p.Id 501LIMIT 1 结果分析 框架 语法 操作 性能 数据支持 迁移成本 ADO.Net Sql 复杂 好 不限 高 Dapper Sql和方法 一般 好 主流关系数据库可扩展支持NoSql 一般 Entity Framework Sql和Linq 简单 一般 主流关系数据库 低 测试代码 笔者这里使用的是一个开源测试代码源码下载原作者使用的是.Net Framework进行要将其修改为.Net Core。但是几乎不需要修改什么代码只需要引用.Net Core需要的包就可以了。但是由于笔者这里用的数据库是Mysql所以需要修改ADO.Net连接地方这也是ADO操作数据不好的地方换一个数据库就要改一次代码具体修改如下 Sql Server var idParam cmd.Parameters.Add(Id, System.Data.SqlDbType.Int); MySql var idParam cmd.Parameters.Add(Id, System.Data.DbType.Int32); Sql Server using (var reader cmd.ExecuteReader()) {reader.Read();obj new Post {Id reader.GetInt32(0),Text reader.GetNullableString(1),CreationDate reader.GetDateTime(2),LastChangeDate reader.GetDateTime(3),Counter1 reader.GetNullableValueint(4),Counter2 reader.GetNullableValueint(5),Counter3 reader.GetNullableValueint(6),Counter4 reader.GetNullableValueint(7),Counter5 reader.GetNullableValueint(8),Counter6 reader.GetNullableValueint(9),Counter7 reader.GetNullableValueint(10),Counter8 reader.GetNullableValueint(11),Counter9 reader.GetNullableValueint(12),}; } MySql using (var reader cmd.ExecuteReader()) {reader.Read();obj new Post {Id reader.GetInt32(0),Text reader.GetString(1),CreationDate reader.GetDateTime(2),LastChangeDate reader.GetDateTime(3),Counter1 reader.GetValue(4) as int?,Counter2 reader.GetValue(5) as int?,Counter3 reader.GetValue(6) as int?,Counter4 reader.GetValue(7) as int?,Counter5 reader.GetValue(8) as int?,Counter6 reader.GetValue(9) as int?,Counter7 reader.GetValue(10) as int?,Counter8 reader.GetValue(11) as int?,Counter9 reader.GetValue(12) as int?,}; } 修改EntityFrameworkExecuter public Post GetItemAsObject(int Id){    return ctx.Posts.Where(p p.Id Id) as Post; } 修改为 public Post GetItemAsObject(int Id){    return ctx.Posts.FirstOrDefault(p p.Id Id); } 或 public Post GetItemAsObject(int Id){    return ctx.Posts.Where(p p.Id Id).FirstOrDefault(); } 因为Posts.Where(p p.Id Id)想让它生成的结果是 SELECT p.Id, p.Counter1, p.Counter2, p.Counter3, p.Counter4, p.Counter5, p.Counter6, p.Counter7, p.Counter8, p.Counter9, p.CreationDate, p.LastChangeDate, p.TextFROM Posts AS pWHERE p.Id 501 但是结果却是 SELECT p.Id, p.Counter1, p.Counter2, p.Counter3, p.Counter4, p.Counter5, p.Counter6, p.Counter7, p.Counter8, p.Counter9, p.CreationDate, p.LastChangeDate, p.TextFROM Posts AS p 由于官方Mysql的Entity Framework存在问题这里使用了第三方的Pomelo.EntityFrameworkCore.MySql包 1.3. 总结 本文中使用原生ADO.Net和轻量级ORM框架Dapper和官方提供的ORM框架Entity Framework Core同时操作Mysql数据时循环500次查询一条数据时所耗时间和一次性取5000条数据所消耗时间比较如果你喜欢Sql或你的数据库不复杂那么Dapper是你的不二之选它性能接近原生ADO.Net有些地方还要更优于,操作也比较方便。 参考资料 https://github.com/StackExchange/Dapper http://dapper-tutorial.net/dapper 原文http://www.cnblogs.com/vipyoumay/p/7942621.html .NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com
http://www.huolong8.cn/news/360641/

相关文章:

  • 想建设个网站怎么赚钱天津网站搜索排名优化
  • 一个简单的个人网站wordpress增加专题
  • 公司怎么制作网站h5制作软件是什么
  • 凯里网站开发gzklyywordpress网站统计插件下载
  • 电商网站有哪些特色新媒体网络营销的概念
  • php伪静态网站破解在线搜索引擎
  • 网站界面设计描述wordpress 后台不显示
  • 木蚂蚁网站正在建设中wordpress新增目录
  • 优化网站的意思logo在线设计免费生成器
  • 会小二也是做会议网站的网站去版权
  • 网站建设和网站西乡做网站费用
  • 网站开发百灵鸟电商运营面试问题及回答
  • 龙岗网站设计代理商江门医疗网站建设
  • 绵阳做网站安卓版傻瓜式编程app软件
  • 做室内装修设计的网站做网站建设需要做哪些工作
  • 湛江市工程建设领域网站数据分析网页
  • 怎么做相册网站wordpress ent
  • 网站建设资料填写做房地产网站
  • 网站修改图片怎么做拍网制作方法图片教程
  • 做网站怎么备份数据17网站一起做网店 睡衣
  • 网站建设明薇通网络售后好企业网站网络营销案例分析
  • 模型下载网站开发流程图seo外链要做些什么
  • 十大免费视频素材网站百度新闻排行榜
  • 平台网站模板素材图片大学生就业网站开发源码
  • 北京建设网站网站下列哪些店铺适合交换友情链接
  • 建设电影网站美食网页制作
  • 制作图片海报的软件建设优化一个网站步骤
  • 优秀wordpress插件东莞seo建站优化公司
  • 中国做水产的有什么网站python基础教程for循环
  • 学校网站建设报价是多少福建建设执业资格中心网站