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

山东建设工程招标网官方网站seo网站推广优化公司

山东建设工程招标网官方网站,seo网站推广优化公司,上海陆海建设集团网站,安徽关键词seoZack.EFCore.Batch是一个支持在Entity Framework Core中高效删除和更新数据的开源库。我们知道#xff0c;EF Core中不支持高效的删除和更新数据#xff0c;所有的更新和操作都是逐条数据处理。比如#xff0c;如果使用如下的语句删除实现“删除所有价格大于10元的书“… Zack.EFCore.Batch是一个支持在Entity Framework Core中高效删除和更新数据的开源库。我们知道EF Core中不支持高效的删除和更新数据所有的更新和操作都是逐条数据处理。比如如果使用如下的语句删除实现“删除所有价格大于10元的书“ctx.RemoveRange(ctx.Books.Where(b b.Price 33)) 那么EntityFramework Core会先执行Select * from books where price33然后再对于每一条数据执行delete from books where idid进行删除。EF Core中批量数据的更新原理也是类似。因此在EF Core中进行大量数据的批量删除、更新效率是比较低的。为了能够实现 “一句SQL实现数据的删除、更新“我开发了开源项目Zack.EFCore.Batch这个开源项目实现了如下批量删除的写法await ctx.DeleteRangeAsyncBook(b b.Price n || b.AuthorName zack yang);上面的C#代码就会执行如下的SQL语句从而实现“一句SQL删除数据“的效果Delete FROM[T_Books] WHERE ([Price] __p_0) OR ([AuthorName] __s_1)这个开源项目使用EF Core实现SQL语句的翻译因此只要EF Core支持的数据库对应的Linq操作都可以实现翻译成对应的方言SQL比如下面的批量更新操作的Linq代码await ctx.BatchUpdateBook().Set(b b.Price, b b.Price 3).Set(b b.Title, b s).Set(b b.AuthorName,bb.Title.Substring(3,2)b.AuthorName.ToUpper()).Set(b b.PubTime, b DateTime.Now).Where(b b.Id n || b.AuthorName.StartsWith(Zack)) .ExecuteAsync();在SQL Server数据库下就会翻译成一条Update语句如下Update [T_Books]SET [Price] [Price] 3.0E0, [Title] __s_1, [AuthorName] COALESCE(SUBSTRING([Title], 3 1, 2), N) COALESCE(UPPER([AuthorName]),N), [PubTime] GETDATE() WHERE ([Id] __p_0) OR ([AuthorName] IS NOT NULL AND ([AuthorName] LIKE NZack%))经历用户几个月的使用和反馈issue目前项目已经升级到1.4.3版支持SQLServer、MySQL、PostgreSQL、Oracle、SQLite数据库。理论上来讲只要EF Core支持的数据库Zack.EFCore.Batch都可以支持。如果您有其他数据库需要支持请和我联系。除了已有的特性之外Zack.EFCore.Batch新版增加了如下特性。 特性一、基于实体关系的数据过滤    在过滤条件中支持实体之间的关系。例如ctx. DeleteRangeAsyncArticle(aa.Comments.Any(cc.Message.Contains(“History”)) ||a.Author.BirthDay.Year2000);特性二、支持数据的批量插入可以用如下的方式进行高效的批量插入ListBook books new ListBook(); for (int i 0; i 100; i) {books.Add(newBook { AuthorName abc i, Price new Random().NextDouble(),PubTime DateTime.Now, Title Guid.NewGuid().ToString() }); } using (TestDbContext ctx newTestDbContext()) {ctx.BulkInsert(books); }BulkInsert()底层使用各个数据库的BulkCopy机制实现数据插入因此插入效率非常高。目前有如下两个缺点不支持关联数据的自动插入对于关联的对象请同样调用BulkInsert()进行插入由于PostgreSQL的.NET Core Provider还没有支持BulkCopy所以目前Zack.EFCore.Batch暂不支持PostgreSQL我后面再去想办法解决。 特征三、支持Take()、Skip()来限制删除和更新数据的范围       批量删除和批量更新都支持通过Take()、Skip()来实现部分删除和部分更新例子代码如下await ctx.Comments.Where(c c.Article.Id id).Skip(3) .DeleteRangeAsyncComment(ctx); await ctx.Comments.Where(c c.Article.Id id).Skip(3).Take(10) .DeleteRangeAsyncComment(ctx); await ctx.Comments.Where(c c.Article.Id id).Take(10) .DeleteRangeAsyncComment(ctx);awaitctx.BatchUpdateComment().Set(c c.Message, c c.Message abc).Where(c c.Article.Id id).Skip(3).ExecuteAsync();await ctx.BatchUpdateComment().Set(c c.Message, c c.Message abc).Where(c c.Article.Id id).Skip(3).Take(10).ExecuteAsync(); awaitctx.BatchUpdateComment().Set(c c.Message, c c.Message abc).Where(c c.Article.Id id).Take(10).ExecuteAsync();具体用法请访问开源项目地址https://github.com/yangzhongke/Zack.EFCore.BatchNuGet地址https://www.nuget.org/packages/Zack.EFCore.Batch/
http://www.pierceye.com/news/11974/

相关文章:

  • 如何做好网站建设内容的策划seo培训课程
  • 新手怎么做html5网站企业展厅效果图大全
  • html网站简易模板网络营销是什么基础类型
  • 网站开发移动端多少钱深圳返利网站开发
  • 有没有做彩票直播的网站我做的网站关键词到首页了没单子
  • 建立公司网站要多少钱网页设计流程25
  • 校园网站建设可行性分析wordpress 重新生成缩略图
  • 网站的做公司建站模板网站
  • 网站数据库安全网站建设服务合同缴纳印花税吗
  • 非法网站开发公司建设网站的分录
  • 看案例网站好听简短域名
  • 做网站代下绿化效果图怎么制作
  • 与网站开发相关的书籍有哪些网站有做网页用的小图片
  • 制作网站要花多少钱如何建网站的详细步骤
  • 做一个网站成本多少钱wordpress cms
  • 深圳返利网站建设网站谁做的比较好看
  • 网站安全检测平台网站如何动态修改主页
  • 北京网站设计 公司新鸿儒网站开发类型什么意思
  • 易语言怎么做视频网站深圳网络推广营销公司
  • 上海做高端网站制作常州溧阳建设工程管理中心网站
  • 小程序和网站的区别wordpress 一键转载
  • 平顶山做网站优化无锡营销型网站建站
  • 换模板搭建网站怎么做公司门户网站制作需要多少钱
  • 网站排名第一有没有发布需求的平台
  • 住房及城乡建设部网站企业网企业网站制作
  • 网站方案 模板wordpress 酒店
  • 常州建设企业网站直播秀场网站开发
  • 北京的网站开发公司建筑人才网招聘官网首页
  • 网站域名登陆地址网站开发实战项目
  • 登陆国外网站速度慢互联网公司排名广州