Html5手机静态网站设计,wordpress wp_list_categories(),定制网站制作公司,企业网站的建设流程包含哪些环节?随着.NET Core 3.0的发布#xff0c;EF Core 3.0也随之正式发布#xff0c;关于这一块最近一段时间也没太多去关注#xff0c;陆续会去对比之前版本有什么变化没有#xff0c;本节我们来看下两个查询。分组我们知道在EF Core 3.0版本之前#xff0c;对于分组查询是在客户端… 随着.NET Core 3.0的发布EF Core 3.0也随之正式发布关于这一块最近一段时间也没太多去关注陆续会去对比之前版本有什么变化没有本节我们来看下两个查询。分组我们知道在EF Core 3.0版本之前对于分组查询是在客户端评估也就是说在内存中操作在EF Core 3.0版本后对于分组查询可以翻译成SQL在数据库进行但是事实情况真的是这样吗接下来我们来看下吧如下给出代码例子。接下来我们在控制台进行如下查询上述我们查询每一篇博客的文章数组我们通过SQL Profiler跟踪到上述示例代码最终翻译成的SQL如我们所期望的那样如下图假设现在有这样一个场景查询所有博客发表的第一篇博客文章。基于这种场景我们需要对发表博客文章进行分组然后取第一篇所以接下来我们进行如下查询既然这样无法翻译根据官方文档可以使用Linq to Object进行查询《https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-3.0/》 那么我们就修改成如下代码查询看看咋客户端都无法支持了呢我们只是想查询所有博客列表中第一篇文章按照我们的理解理论上是可以进行翻译的对不对比如翻译成如下直接写的SQL语句所以到这里我们大概可以猜测出EF Core对分组查询支持的并不是那么好目前应该只支持简单的分组求和而已稍微复杂一点则无法翻译所以我们还是老老实实将分组还是完全放在客户端评估吧如下查找我们可以通过EF.Functions.Like来进行模糊查询我们可以通过StartWith或EndWith来查询开头或结尾的数据要是现在需要查询出博客文章标题中包含某一字符的文章列表我们又该如何查询呢我们想到通过IndexOf来查询接下来我们来看看难道我们又只能将所有查询出来然后在内存中操作吗代码如下其实我们只要将上述单引号修改双引号即可解决完全在客户端评估的问题如下根据我们的查询描述我们明明是想查询在标题中查询指定字符为何对字符不能支持只支持字符串呢不知道官方是出于何种原因。同时这里我们也注意到无论是MySQL还是SQL Server等等尽量不要将表中列设置为可空即使是可空也要设置为不可空给定一个默认值即可一旦数据量巨大时会发现查询很慢因为通过IS NULL或者IS NOT NULL不走索引导致。比如上述我们查询的Title我们无论是通过Data Annotations还是Fluent Api都必须配置成不可空比如这里我们通过Data Annotations配置如下此时我们继续进行上述查询时候会发现对空值的判断已经没有了同时也减少了查询语句如下请注意上述我所演示EF Core版本为3.0.1。本节我也只是通过简单的示例稍微给大家看了EF Core 3中一些小的问题当然可能还存在其他的问题更多细节等我后续研究会继续给出EF Core 3.x系列文章感谢您的阅读若有叙述不当或错误之处还望指正谢谢。