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

如何做网站策划织梦做的网站打开慢

如何做网站策划,织梦做的网站打开慢,效果图哪里可以制作,网站嵌入js推荐关注「码侠江湖」加星标#xff0c;时刻不忘江湖事这是 EF Core 系列的第七篇文章#xff0c;上一篇文章讲述了 EF Core 中的实体数据修改。这篇文章讲一讲 EF Core 如何进行批量操作。在众多的 ORM 框架中#xff0c;EF Core 的功能并不是最强大的那个#xff0c;性能… 推荐关注「码侠江湖」加星标时刻不忘江湖事这是 EF Core 系列的第七篇文章上一篇文章讲述了 EF Core 中的实体数据修改。这篇文章讲一讲 EF Core 如何进行批量操作。在众多的 ORM 框架中EF Core 的功能并不是最强大的那个性能可能也不是最好的那个。但却一直是最稳定、最安全扩展能力最强、使用人数最多的那个。虽然在性能方面在 EF Core 6.0 中已经得到了非常大的提升。但是在功能方面 EF Core 一直有一个不完善的地方就是它不能很好的支持数据的批量操作也就是批量删除和批量更新。所以这篇文章就先从比较常用的批量删除和批量更新讲起。点击上方或后方蓝字阅读 EF Core 系列合集。批量操作在 EF Core 中批量更新和删除数据都需要先进行查询把数据加载到内存中然后再对数据操作最后再SaveChanges 保存到数据库。我们来看这个示例var accounts  _context.Accounts.Where(account  account.Age  1);foreach (var a in accounts) {a.Age  a.Age  1; }_context.SaveChanges();为了更新 Accounts 中实体的 Age 属性我们必须查询出所有符合条件的实体集合然后用遍历的方式在内存中去逐个修改实体的 Age 属性。最后通过 SaveChanges 方法保存修改。运行程序结果如下图所示通过控制台日志可以发现前后总共执行了 3 条 SQL 语句1 条 Selet 语句和 2 条 Uptete 语句。第一条 Selet 语句是为了查询出所有符合条件的数据由于数据库中只有 2 条数据所以后面 2 条 Uptete 语句是针对这 2 条数据的更新操作。如果我们把更新操作换成删除操作EF Core 也会如此去做。大家可以想象一下如果批量更新或者删除的数据量比较大那么这样的操作性能无疑是非常底下的。因此我们需要一种在 EF Core 中只使用一条 SQL 语句就可以批量删除或更新数据的方法。由于这个功能确实比较常用很多其它第三方的 ORM 框架几乎也都支持这个操作。但为什么作为 ORM 框架大佬的 EF Core却不提供这个功能呢简单来说EF Core 的开发团队认为这样做会导致 EF Core 的对象状态跟踪混乱。比如对于同一个上下文类如果用批量删除的方法删除了数据那么在被删除之前查询出来的数据状态就混乱了。毕竟EF Core 是一个成熟且安全性高的 ORM 框架必然会考虑潜在风险的存在。如果想要完美实现可能需要重构 EF Core 的代码工作量方面会比较大。但是我们作为开发者完全可以根据场景需求来规避这些问题的存在。比如在一个 Web 应用中删除操作通常都是在一个 HTTP 请求中完成的不同的 HTTP 请求上下文是不同的所以基本不会涉及到 EF Core 开发团队担心的问题。即便在某些特殊场景下涉及到在同一个上下文里数据删除之前就把数据查询出来的场景那也完全可以通过在删除之后再重新查询一次的方式来规避这个问题。未来 EF Core 会不会添加这个功能我们不得而知但我们也有自己的解决方法。第一个解决方法就是执行原生 SQL 语句不过它的缺点我们在前面的文章中已经提过就不再多说。第二个解决方法是使用第三方的 ORM 框架比如 FreeSQL、SugarSQL它们都提供了批量更新和批量删除的功能使用起来也非常简单。不过这种方法的缺点就是必须在项目替换掉 EF Core 使用第三方的 ORM 框架。目前 EF Core 是 .NET 中使用率最高的 ORM 框架主打安全性与稳定性而且 6.0 版本性能也得到了大量的改善所以不建议轻易更换。第三个解决方法就是使用 EF Core 的扩展插件由于 EF Core 在全球范围有着最多的用户基数所以也形成了一个强大的生态环境拥有很多的第三方扩展。这同样也是第三方 ORM 框架所无法比拟的地方。我们可以在 EF Core 的官方文档查阅到被官方收集的第三方扩展插件和工具。这里面支持批量操作的扩展插件有两个「EFCore.BulkExtensions」 和 「Entity Framework Plus」。它们都支持最新的 EF Core更新也比较稳定。不同的是E「FCore.BulkExtensions」 功能专一仅扩展了批量操作方面的功能同时也支持 「SqlBulkCopy」也就是大数据量的批操作。由于 「SqlBulkCopy」 只支持 SQLServer 和 SQLite 所以 「EFCore.BulkExtensions」 只支持 SQLServer 和 SQLite。「EF Plus」 功能更加强大扩展了更多的查询功能它分为免费版和收费版基础的批量操作免费版就可以支持高级批量操作以及 SqlBulkCopy 则只有收费版支持。如果使用的是 MySQL或者不需要 SqlBulkCopy那么 「EF Plus 免费版」是首选因为它支持更多的数据库扩展了更丰富的查询功能。安装好 EF Plus这里我将刚才批量更新的操作改为 EF Plus 来实现PackageReference IncludeZ.EntityFramework.Plus.EFCore Version6.13.19 /_context.Accounts.Where(account  account.Age  1).Update(account  new Account {Age  account.Age  1},update  update.Executing  command  Console.WriteLine(command.CommandText));Update 就是 EF Plus 扩展的方法它的第一个参数是要更新的数据第二个参数是一个执行拦截器委托这里用来打印准备执行的 SQL 语句。现在运行程序可以在控制台中看到:执行的是 1 条 UPDATE 语句这条 SQL 语句会更新所有 Accounts 中符合条件的 Age 字段。除了批量更新批量删除也同样简单。更多的示例大家可以看 EF Plus 的官网文档。更多精彩内容请关注我▼▼如果喜欢我的文章那么在看和转发是对我最大的支持戳下面蓝字阅读ASP.NET 6 中间件系列ASP.NET 最通俗易懂的依赖注入系列查缺补漏系统学习 EF Core 6  系列老子不亏是程序员的祖师爷不得不知的超精简 HTTP 协议推荐关注微信公众号码侠江湖                        觉得不错点个在看再走哟
http://wiki.neutronadmin.com/news/82883/

相关文章:

  • html5手机app网站模板免费下载万网建网站流程
  • 西安火车站网站建设wordpress手动主题
  • 搭建一个网站的步骤怎样查公司是不是正规公司
  • 怎么寻找网站关键词并优化没内容的网站怎么优化
  • 音乐网站建设方案书模板wordpress 仿主题
  • vc 做网站源码0元首充的手游平台
  • 网站链接优化海外如何 淘宝网站建设
  • 河北省建设厅网站首页淮北网站开发公司
  • 长安东莞网站设计北京网站制作招聘
  • 网站建设报价单模板网销的网站建设与管理
  • 济源制作网站wordpress暗箱
  • 专门做加盟的网站主流网站开发
  • 建站之家官网iis配置网站开发环境
  • idc科技公司网站模板网页版登录入口
  • 外贸网站 cms正规排名网站推广公司
  • 电子商务网站建设用什么登录网站设计字体
  • 网站建设 项目书 框架动漫网站的建设目标
  • 嘉兴网站seo公司厦门公司注册程序注册程序
  • 域名过期的网站怎么看南昌seo锐创
  • 江苏强荣建设有限公司网站余姚网站推广公司
  • 河南网站建设制作价格一个完整的网址包含哪些内容
  • 网站开发工具的功能包括html购物网站功能报价
  • wordpress 存储网站树状型结构优化
  • 建网站 多少钱钱网站导购话术
  • 浦城 做网站重庆最新数据消息
  • 360怎么免费建网站神一般的网页设计网站
  • 看电视剧的免费网站大全如何开通个人网站
  • 专业网站制作公司招聘网络广告推广的兼职
  • 做任务领q币网站花木公司网站源码
  • 网站未授权cas要怎么做做lt行业的人让我登网站