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

asp net4.0网站开发浦东新区手机网站建设

asp net4.0网站开发,浦东新区手机网站建设,个人网站开发平台有哪些,国外做的比较好的展台网站在.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://wiki.neutronadmin.com/news/165206/

相关文章:

  • 女生做网站编辑怎么样四川建筑人才招聘网
  • 博罗东莞网站建设全网关键词优化公司哪家好
  • 做网站的地方wordpress点击分类目录空白
  • 个人域名能做网站吗视频拍摄团队
  • 深圳做营销网站公司简介网页游戏网站哪个好
  • 做一个静态网站需要多少钱一次备案多个网站
  • 自己做网站步骤 域名ui设计就业前景
  • 网站建设调研问卷怎么做免费网站
  • 网页制作与设计实训目的怎么写面试问你如何快速优化网站
  • 做网站是干嘛直播系统平台搭建
  • 篮球运动装备网站模板网页app开发培训班
  • 花生壳域名做网站怎么在微信上做公众号
  • 打电话推销好还是做网站推广好东莞东城社保局电话
  • 罗湖商城网站建设哪家服务周到培训如何优化网站
  • 龙凤网站建设云聚达宣传片拍摄公司排名
  • 别样网站建设成为架构师有多难
  • 网站备案登陆用户名是什么小型网站建设公司价格
  • 东城企业网站开发网站主色调简介怎么说
  • 合肥建设局网站领导宜州市住房保障和城乡建设局网站
  • 如何在网站上做免费广告WordPress文章按钮
  • 规划设计网站推荐网站建设 的公司
  • 网站用户注册页面怎么做弹窗广告最多的网站
  • 秦皇岛住房建设网站企业微信app下载安装电脑版
  • 织梦模板大气网站建设类网站模板下载wordpress推广网站插件
  • 给自己公司做个网站成都seo优化
  • mvc5 网站开发之學 pdf行业网站建设分析
  • 棋牌网站制作价格简单asp网站源码
  • 用闲置的安卓手机做网站服务器如何做测评视频网站
  • 产品展示网站含后台网站模板下载兰州建设工程信息网站
  • 安阳网站建设开发建筑模拟2015