随笔分类 - 03-EF Core
摘要:一. 说明 1. 目标 这里主要测试 EFCore8.x 版本提供的批量删除 和 批量更新; 以及老杨的框架 [Zack.EFCore.Batch] 以SQLServer为载体进行测试。 2. 准备 (1). 需要的程序集 必须的程序集: Microsoft.EntityFrameworkCore.
阅读全文
摘要:一. 新功能清单 详见:https://learn.microsoft.com/zh-cn/ef/core/what-is-new/ef-core-8.0/whatsnew 二. 中断性变更 1. LINQ 查询中的 Contains 低版本SQLServer失效 (1). 说明 从 EF Core
阅读全文
摘要:一. 说明 1. 目标 这里主要测试 EFCore7.x 版本提供的批量删除 和 批量更新; 以及老杨的框架 [Zack.EFCore.Batch] 以SQLServer为载体进行测试。 2. 准备 (1). 需要的程序集 必须的程序集: Microsoft.EntityFrameworkCore.
阅读全文
摘要:一. Linq改进 (参考官方文档:https://docs.microsoft.com/zh-cn/ef/core/what-is-new/ef-core-6.0/whatsnew) 1. IsNullOrWhitespace (1).含义:判断字符串是否为 Null 或 String.Empty
阅读全文
摘要:一. 表达式树 1. 说明 我们通常都是写linq表达式,但对于一些动态字段,比如点击列排序,默认是实现不了的,除非手动拼接,非常繁琐,这里就可以通过string类型转换成linq 官网:https://dynamic-linq.net/ 【开源免费】 支持的方法详见:https://dynamic
阅读全文
摘要:一. 批处理-[Zack.EFCore.Batch] (一). 说明 1. 简介 (详细用法见GitHub:https://github.com/yangzhongke/Zack.EFCore.Batch) 【开源免费】 使用这个开发包, EFCore用户可以使用LINQ语句删除或者更新多条数据库记
阅读全文
摘要:一. 再探IQueryable 和 IEnumerable 1. 二者生成SQL的区别 普通集合的版本(IEnumerable)是在内存中过滤(客户端评估),而IQueryable版本则是把查询操作翻译成SQL语句,在DB中操作。 代码分享: { using var db = new EFCore6
阅读全文
摘要:一. EFCore6.0连接MySQL 1. 常用程序集 (1) MySql.EntityFrameworkCore : mysql官方出品,不开源,更新慢 (2) Pomelo.EntityFrameworkCore.MySql: 个人维护,开源,更新快,非常活跃 【推荐】 2. 代码实操 (1)
阅读全文
摘要:一. EFCore6.0反向测试 1. 需要的程序集 必须的程序集: Microsoft.EntityFrameworkCore.Tools EF自身的程序集:Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.SqlServer
阅读全文
摘要:一. 说明 本节不单独整理了,官方文档写的非常好: https://docs.microsoft.com/zh-cn/ef/core/dbcontext-configuration/ 简单总结几点: 1. DBContext实例化的4种方式 (1). ConfigureService中注入,然后在控
阅读全文
摘要:一. 用法 1. 说明 关于该程序集详细的介绍、背景、原理,直接去看老杨自己的文章。(支持:SQLServer、MySQL、Oracle、Postgresql、Sqlite,EFCore必须5.0以上) 文章参考:https://www.bilibili.com/read/cv8545714 htt
阅读全文
摘要:一. 新功能(变化) 前置 参考官方文档:https://docs.microsoft.com/zh-cn/ef/core/what-is-new/ef-core-5.0/whatsnew https://docs.microsoft.com/zh-cn/ef/core/what-is-new/ef
阅读全文
摘要:一. 说明 1. 环境准备 (1).测试载体:.Net 5.0 控制台 (2).数据库:MySQL 5.7 (事先改为大小写敏感 lower_case_table_names=0) (3).EFCore相关程序集:(这里统一用5.0.6 版本) Microsoft.EntityFrameworkCo
阅读全文
摘要:一. EFCore剖析 1. 过滤查询 eg:查询用户姓名中含有p字母的所有用户信息。 写法1:使用EF.Functions.Like var data1 = dbContext.T_UserInfor.Where(u => EF.Functions.Like(u.userName, "%p%"))
阅读全文
摘要:一. 分区、分表、分库 1. 分区 (1).含义 就是把一张表的数据分成N个区块,在逻辑上看最终只是一张表,但底层是由N个物理区块组成的。 (2).常用到的指令: alter database <数据库名> add filegroup <文件组名> alter database <数据库名称> ad
阅读全文
摘要:1. OfType 获取集合中中指定类型元素。 object[] obj = { 1, 23, 4, 5, 555, "aaa", "bbb" }; int max = obj.OfType<int>().Max(); //结果是55, 获取int类型中的最大值 2. selectMany 相当于二
阅读全文
摘要:一. 各种性能测试 这里分享EF、EFCore、EF Core调用SQL语句 分别在1000条、1w、4w、10w下的增删改查需要的时间。(括号里代表的都是对应的range方法) 1. EF测试 2. EFCore测试 3. EF Core调用SQL语句 4. EFCore组装成SQL语句,inse
阅读全文
摘要:1.使用DbContext池 在Core Mvc中,如果使用 AddDbContextPool 方法,那么在控制器请求 DbContext 实例时,我们会首先检查池中有无可用的实例。 请求处理完成后,实例的任何状态都将被重置,并且实例本身会返回池中。 从概念上讲,此方法类似于 ADO.NET 连接池
阅读全文
摘要:一. 简介 1.背景 索引用于快速找出在某个列中有某一特定值的行,不使用索引,数据库必须从第一条记录开始读完整个表,直到找出相关的行。表越大,查询数据所花费的时间越多, 如果表中查询的列有一个索引,数据库能快速到达一个位置去搜索数据。 2.含义 索引是一个单独的,存储在磁盘上的数据结构,它们包含对数
阅读全文
摘要:一. SqlMethods操作 1. Like 自定义的通配表达式。%表示零长度或任意长度的字符串;_表示一个字符;[]表示在某范围区间的一个字符;[^]表示不在某范围区间的一个字符。 (1). 例如:查询消费者ID以“C”开头的消费者。 var q = from c in db.Customers
阅读全文