原文:关于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查询问题解决方案的更多相关文章

  1. [Programming Entity Framework] 第3章 查询实体数据模型(EDM)(一)

    http://www.cnblogs.com/sansi/archive/2012/10/18/2729337.html Programming Entity Framework 第二版翻译索引 你可 ...

  2. [翻译] - <Entity Framework> - 直接执行数据库命令

    原文:[翻译] - <Entity Framework> - 直接执行数据库命令 纯属学习上的记录, 非专业翻译, 如有错误欢迎指正! 原文地址: http://msdn.microsof ...

  3. [Entity Framework] MySQL @ Entity Framework 6

    原文 [Entity Framework] MySQL @ Entity Framework 6 要让MySQL能够用EF6,我花了一点时间,在此记录一下 安装元件 在设定档加入Provider 安装 ...

  4. Entity Framework 基于方法的查询语法

      实体框架(Entity Framework )是 ADO.NET 中的一套支持开发面向数据的软件应用程序的技术. LINQ to Entities 提供语言集成查询 (LINQ) 支持,它允许开发 ...

  5. 在Entity Framework 中执行T-sql语句

    从Entity Framework  4开始在ObjectContext对象上提供了2个方法可以直接执行SQL语句:ExecuteStoreQuery<T> 和 ExecuteStoreC ...

  6. Entity Framework Core 执行SQL语句和存储过程

    无论ORM有多么强大,总会出现一些特殊的情况,它无法满足我们的要求.在这篇文章中,我们介绍几种执行SQL的方法. 表结构 在具体内容开始之前,我们先简单说明一下要使用的表结构. public clas ...

  7. MVC中使用Entity Framework 基于方法的查询学习笔记 (一)

    EF中基于方法的查询方式不同于LINQ和以往的ADO.NET,正因为如此,有必要深入学习一下啦.闲话不多说,现在开始一个MVC项目,在项目中临床学习. 创建MVC项目 1.“文件”--“新建项目”-- ...

  8. 一个Entity Framework、ADO.NET查询性能测试

    Entity Framework自然是会比ADO.NET性能慢点,这个不多说了.直接上结果. 本该用测试项目的,不过我建了个aspx.下面是随便测20遍得到的结果 补充!!把12行改成 list = ...

  9. 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 ...

随机推荐

  1. 如何彻底隐藏iOS7应用的status bar

    用xcode5开发新的iOS游戏,发现一个坑爹的现象,虽然我已经在info.plist里面把Status bar is initially hidden设置成了YES,但在设备上一跑还是看到丑陋的st ...

  2. opennebula虚拟机启动失败

    问题1 故障现象: Wed Jan :: [DiM][I]: New VM state is ACTIVE. Wed Jan :: [LCM][I]: New VM state is PROLOG. ...

  3. C字符串压缩算法

    #include <iostream> #include <stdlib.h> //#include <algorithm> using namespace std ...

  4. Android EditText载入HTML内容(内容包括网络图片)

    android中的Html.fromHtml能够用来载入HTML的内容.fromHtml有三个參数须要设置,第一个是要显示的html内容,第二个就是要说的重点,ImageGetter,用来处理图片载入 ...

  5. 数据字符集mysql主从数据库,分库分表等笔记

    文章结束给大家来个程序员笑话:[M] 1.mysql的目录:在rpm或者yum安装时:/var/lib/mysql  在编译安装时默许目录:/usr/local/mysql 2.用rpm包安装的MyS ...

  6. HttpRequest

    #ifndef __HTTP_REQUEST_H__ #define __HTTP_REQUEST_H__ #include "cocos2d.h" #include " ...

  7. 漫谈C#之关键字

    每一种语言都有非常多的关键字,而且这些关键字也都大同小异,不过毕竟还是有些许的不一样.有些关键字大家碰到的多了,自然就熟悉了,但是有些关键字用得不大多,或者是新引入的,所以就不大熟悉了.我平常在用的时 ...

  8. ListView美化:去阴影、底色、选中色

    原文:http://blog.csdn.net/wxg630815/article/details/6987305 1.去滑动到顶点和底边时的黑色阴影 [html] view plaincopy   ...

  9. Android腾讯微博开发之随机字符串与签名实现

    Android腾讯微博开发入门之随机字符串与签名实现   直接上代码   1.Utils类,包括签名和随机字符串   import java.util.Random; import javax.cry ...

  10. iOS开发——网络编程Swift篇&(一)网络监测

    网络监测 enum ReachabilityType { case WWAN, WiFi, NotConnected } public class Reachability { /** :see: O ...