首页 > 数据库 >真的被Sqlsugar给气到了!

真的被Sqlsugar给气到了!

时间:2024-11-15 19:11:32浏览次数:1  
标签:Console Name %% EF 气到 WriteLine word 真的 Sqlsugar

博客园潜水多年,账号都搞忘记好几个,一直没有写什么东西,但是这次真忍不了了,被sqlsugar出现的奇葩问题和作者的奇葩处理方式给气到了。

起因是在使用Sqlsugar过程中,偶然发现了一个问题,确认这个问题真实存在后,我就去提了issue:

模糊查询遭遇特殊符号时的问题 · Issue #1303 · DotNetNext/SqlSugar

 

省流说明: 问题大概就是,当模糊搜索的关键词是  %% 时,sqlsugar 会将sql生成   like  '%%%%' 这样。由于 %%%% 允许名字包含任意数量的字符,这个模式实际上会匹配 字段中的任何值。换句话说,这个 LIKE 条件没有提供任何过滤,因此它相当于没有指定任何条件。

 

本身这个问题很简单,我甚至都不太相信开源多年,这么大用户量的ORM会有这种低级的问题。但是作者的回复真的把我惊到了:

 

就是不改,还狡辩称很多ORM都不会去处理这个

 

昨天忙,没时间理这个,今天空闲了,然后就做了下测试,选择了三个最常用的ORM:Freesql,SqlSugar,EF Core。

 
ORM 版本号
Freesql 3.2.833
SqlsugarCore 5.1.4.17
EF CORE 8.0.11

 

测试代码如下:

 

 var word = "%%";

 Console.WriteLine("  ");
 Console.WriteLine("  ");

 Console.WriteLine("FreeSql:");
 var list1 = freeSql.Select<Student>().Where(t => t.Name.Contains(word)).ToList();

 Console.WriteLine("  ");
 Console.WriteLine("  ");

 Console.WriteLine("SqlSugar:");
 var list2 = sqlSugarClient.Queryable<Student>().Where(t => t.Name.Contains(word)).ToList();

 Console.WriteLine("  ");
 Console.WriteLine("  ");

 Console.WriteLine("EF CORE:");
 var list3= dbContext.Students.Where(t => t.Name.Contains(word)).ToList();

 

执行结果如下:

FreeSql:
Sql:SELECT a.`Id`, a.`Name`, a.`Age`, a.`GradeId`
FROM `student` a
WHERE (locate('%%', a.`Name`) > 0)


SqlSugar:
SELECT `Id`,`Name`,`Age`,`GradeId` FROM `student`  WHERE  (`Name` like concat('%',@MethodConst0,'%'))
{"@MethodConst0":"%%"}



EF CORE:
warn: Microsoft.EntityFrameworkCore.Model.Validation[10400]
      Sensitive data logging is enabled. Log entries and exception messages may include sensitive application data; this mode should only be enabled during development.
info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (3ms) [Parameters=[@__word_0_contains='%\%\%%' (Size = 4000)], CommandType='Text', CommandTimeout='30']
      SELECT `s`.`Id`, `s`.`Age`, `s`.`GradeId`, `s`.`Name`
      FROM `student` AS `s`
      WHERE `s`.`Name` LIKE @__word_0_contains

 

 

 

从上述结果可以明显看到,Freesql使用了 locate 函数来实现模糊搜索;EF CORE 对 % 进行了转义(__word_0_contains='%\%\%%') 。 唯独Sqlsugar,就是个奇葩,完全不处理!作者还强词夺理的狡辩!

 

SON OF BISCUIT !

 

标签:Console,Name,%%,EF,气到,WriteLine,word,真的,Sqlsugar
From: https://www.cnblogs.com/diamondhusky/p/18548492

相关文章

  • 稀土抗菌剂真的能抗菌吗?
    在现代生活中,抗菌剂已经成为了我们日常生活的一部分。然而,面对市面上各种抗菌产品,我们如何才能选择既安全又有效的产品呢?近年来,稀土抗菌剂因其独特的抗菌性能而引起了广泛关注。一、稀土抗菌剂的抗菌原理稀土抗菌剂的抗菌抑菌机理有四个层面:一是稀土化合物与细菌表面静电结......
  • 你的WAF是否真的安全?雷池社区版的安全能力测试
    你的WAF能力如何?雷池社区版的安全能力测试最近雷池社区版很火,各大技术群都在讨论什么是雷池?引用官网文档的一段话:SafeLine,中文名 "雷池",是一款简单好用, 效果突出的 Web 应用防火墙(WAF),可以保护 Web 服务不受黑客攻击。雷池通过过滤和监控 Web 应用与互联网之间的 ......
  • 真的一行代码没写,使用cursor智能代码编辑器,通过问答的方式,我构建了一个微信小程序
    文章目录1待办123产品介绍1.1使用说明1.2产品亮点1.3应用场景2零基础实战教程:零代码开发微信小程序2.1微信公众号注册小程序2.2下载安装微信开发者工具2.3下载安装cursor2.4使用cursor零代码构建微信小程序3总结使用cursor已经有一段时间了,主要是辅助代......
  • Freesql、SqlSugar测试有感
    突然心血来潮测试了一下Freesql和SqlSugar的批量插入和批量更新性能,一搜测评一大堆,但是没找到自己想要的结果,自己动手测试一下基本的批量插入和批量更新性能。废话不多说直接贴代码1usingFreeSql;2usingFreeSql.DataAnnotations;3usingSqlSugar;45namesp......
  • 今年测试这工资是认真的吗?
    ......
  • closerAI ComfyUI超真实的LORA推荐,AI还是真人真的分不清了,极力推荐使用的LORA,快来看看
    大家好,我是Jimmy。这期我们主要介绍一个适用于flux模型生图的LORA。它是超真实LORA。加入flux工作流中让出图更加真实逼真。这个lora名称叫:UltraRealisticLoraProject。目前迭代到V2版本,它的作用是为我们flux的创作带来更多的真实感而且更加稳定,更好地使用基于文本的提示,......
  • 【论文阅读】您的 AI 生成的代码真的安全吗?Evaluating Large Language Models on Secu
    IsYourAI-GeneratedCodeReallySafe?EvaluatingLargeLanguageModelsonSecureCodeGenerationwithCodeSecEval标题:您的AI生成的代码真的安全吗?基于CodeSecEval对LLMs代码生成的安全性进行评估摘要:*【Background】大语言模型(LLMs)在代码生成和代码修复方面取......
  • Oracle 存储过程分页 + Sqlsugar调用
    一、Oracle存储过程分页1createPROCEDUREGetPatientVisitData(2p_HospIdINVARCHAR2,--院区编码3p_strDateINVARCHAR2,--开始日期4p_endDateINVARCHAR2,--结束日期5p_page_sizeINNUMBER,--每页记录数6p_page_numberIN......
  • C++模板真的没有教材讲的呢么简单
            模板和泛型编程息息相关,但是大多数人对模板的了解可能只是教材上的一个compare函数,但实际上模板的内容很丰富,学起来也比较抽象,我会结合我所了解的一部分模板内容进行解释。    本文内容参考《C++Primer》目录定义模板模板实参推演可变参数模板......
  • Sqlsugar调用Oracle的存储过程
    前段时间在搬迁项目的时候,遇到一个问题,就是用sqlsugar调用oracle的存储过程的时候调用不了;当时卡了一整天,现在有空了把这个问题记录分享一下。先去nuget上安装一下sqlsugar的包:再安装一个oracle的驱动:添加一下Json包:再去创建一下连接 再创建一个测试用的存储过程crea......