关于MySql entity framework 6 执行like查询问题解决方案
原文:关于MySql entity framework 6 执行like查询问题解决方案
本人不善于言辞,直接开门见山
环境:EF6.0.0.0+MySQL Server5.6+MySqlConnector6.9.5.0
问题点如下:
var username = "admin";
var lst = userService.GetQuery().Where(p => p.UserName.Contains(username));
foreach (var user in lst)
{
Console.WriteLine(user.Id); Console.WriteLine(user.UserName);
}
1、GetQuery是封装的,返回IQueryable<T>类型,采用以上查询方式,输出SQL语句为:
SELECT
`Extent1`.`Id`,
`Extent1`.`CaeateBy`,
`Extent1`.`CreateDate`,
`Extent1`.`CreateIp`,
`Extent1`.`DefualtLang`,
`Extent1`.`Descripton`,
`Extent1`.`IsSystem`,
`Extent1`.`LastEditBy`,
`Extent1`.`LastEditDate`,
`Extent1`.`LastEditIp`,
`Extent1`.`Password`,
`Extent1`.`RealName`,
`Extent1`.`StatusId`,
`Extent1`.`TypeId`,
`Extent1`.`UserName`
FROM `User` AS `Extent1`
WHERE `Extent1`.`UserName` LIKE '%p__linq__0%'
为毛是 %p__linq__0% ??
如果用以下查询方式:
var lst = userService.GetQuery().Where(p => p.UserName.Contains("admin"));
输入SQL便是正确的:
SELECT
`Extent1`.`Id`,
`Extent1`.`CaeateBy`,
`Extent1`.`CreateDate`,
`Extent1`.`CreateIp`,
`Extent1`.`DefualtLang`,
`Extent1`.`Descripton`,
`Extent1`.`IsSystem`,
`Extent1`.`LastEditBy`,
`Extent1`.`LastEditDate`,
`Extent1`.`LastEditIp`,
`Extent1`.`Password`,
`Extent1`.`RealName`,
`Extent1`.`StatusId`,
`Extent1`.`TypeId`,
`Extent1`.`UserName`
FROM `User` AS `Extent1`
WHERE `Extent1`.`UserName` LIKE '%admin%'
太奇葩了!!
结果搞了一整天,无意中发现如下解决方法如下:
var username = "admin";
var lst = userService.GetQuery().Where(p => p.UserName.Contains(username.Trim())); //或ToLower()
foreach (var user in lst)
{
Console.WriteLine(user.Id); Console.WriteLine(user.UserName);
}
就会生成如下正确的SQL:
Query SELECT
`Extent1`.`Id`,
`Extent1`.`CaeateBy`,
`Extent1`.`CreateDate`,
`Extent1`.`CreateIp`,
`Extent1`.`DefualtLang`,
`Extent1`.`Descripton`,
`Extent1`.`IsSystem`,
`Extent1`.`LastEditBy`,
`Extent1`.`LastEditDate`,
`Extent1`.`LastEditIp`,
`Extent1`.`Password`,
`Extent1`.`RealName`,
`Extent1`.`StatusId`,
`Extent1`.`TypeId`,
`Extent1`.`UserName`
FROM `User` AS `Extent1`
WHERE (LOCATE(TRIM('admin'), `Extent1`.`UserName`)) > 0
虽然没有翻译成Like查询,但是却翻译成了Locate查询!! 真是奇葩,求高手解释
但是Locate查询效率要高于like查询!!
如下:

===========================================
虽然问题是暂时解决了,但是原因不明!请各位大虾指教!
关于MySql entity framework 6 执行like查询问题解决方案的更多相关文章
- [Programming Entity Framework] 第3章 查询实体数据模型(EDM)(一)
http://www.cnblogs.com/sansi/archive/2012/10/18/2729337.html Programming Entity Framework 第二版翻译索引 你可 ...
- [翻译] - <Entity Framework> - 直接执行数据库命令
原文:[翻译] - <Entity Framework> - 直接执行数据库命令 纯属学习上的记录, 非专业翻译, 如有错误欢迎指正! 原文地址: http://msdn.microsof ...
- [Entity Framework] MySQL @ Entity Framework 6
原文 [Entity Framework] MySQL @ Entity Framework 6 要让MySQL能够用EF6,我花了一点时间,在此记录一下 安装元件 在设定档加入Provider 安装 ...
- Entity Framework 基于方法的查询语法
实体框架(Entity Framework )是 ADO.NET 中的一套支持开发面向数据的软件应用程序的技术. LINQ to Entities 提供语言集成查询 (LINQ) 支持,它允许开发 ...
- 在Entity Framework 中执行T-sql语句
从Entity Framework 4开始在ObjectContext对象上提供了2个方法可以直接执行SQL语句:ExecuteStoreQuery<T> 和 ExecuteStoreC ...
- Entity Framework Core 执行SQL语句和存储过程
无论ORM有多么强大,总会出现一些特殊的情况,它无法满足我们的要求.在这篇文章中,我们介绍几种执行SQL的方法. 表结构 在具体内容开始之前,我们先简单说明一下要使用的表结构. public clas ...
- MVC中使用Entity Framework 基于方法的查询学习笔记 (一)
EF中基于方法的查询方式不同于LINQ和以往的ADO.NET,正因为如此,有必要深入学习一下啦.闲话不多说,现在开始一个MVC项目,在项目中临床学习. 创建MVC项目 1.“文件”--“新建项目”-- ...
- 一个Entity Framework、ADO.NET查询性能测试
Entity Framework自然是会比ADO.NET性能慢点,这个不多说了.直接上结果. 本该用测试项目的,不过我建了个aspx.下面是随便测20遍得到的结果 补充!!把12行改成 list = ...
- ASP.NET: Setup a MVC5 website with MySQL, Entity Framework 6 Code-First and VS2013
The new features available in EF6 allow any developer to build a simple DB-powered website with very ...
随机推荐
- Debug with jdb
原文地址: http://www.javaworld.com/article/2077445/testing-debugging/debug-with-jdb.html Q: How do you u ...
- Squid代理服务器&&搭建透明代理网关服务器
案例需求 ——公司选用RHEL5服务器作为网关,为了有效节省网络带宽.提高局域网访问Internet的速度,需要在网关服务器上搭建代理服务,并结合防火墙策略实现透明代理,以减少客户端的重复设置工作 需 ...
- zencart技术联盟交流群
增加500人的免费互助"zencart技术联盟交流群"!名额不多,先到先得! zencart技术联盟俱乐部(1群) ( 已满) zencart技术联盟俱乐部(2群) 群号:1990 ...
- C++中new与delete问题学习
一.new char与delete问题 . 问题程序 [cpp] view plaincopy #include <iostream> using namespace std; void ...
- Keeplived 详解
http://www.cnblogs.com/pricks/p/3822232.html
- Ruby on Rails Tutorial 第一章 之 搭建开发环境
云端开发环境,Cloud9(https://ide.c9.io/).这个开发环境预先安装好了Rails开发所需要的大多数软件,包括Ruby.RubyGems和Git,需要自己安装Rails. 1.安装 ...
- Jordan Lecture Note-10: Kernel Principal Components Analysis (KPCA).
Kernel Principal Components Analysis PCA实际上就是对原坐标进行正交变换,使得变换后的坐标之间相互无关,并且尽可能保留多的信息.但PCA所做的是线性变换,对于某些 ...
- PAT 1001
Calculate a + b and output the sum in standard format -- that is, the digits must be separated into ...
- OpenCV之邻域运算之最值滤波
写了一段小程序,分享给大家! //==================================================================== // 作者 : quarry ...
- PS将图标变灰
方法一:直接去色,图像——调整——去色:快捷键ctrl+shift+U 方法二:图像——调整——灰白:快捷键shift+ctrl+alt+B;