关于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 ...
随机推荐
- CSS开启硬件加速 hardware accelerated
作者:孙志勇 微博 日期:2016年12月6日 一.时效性 所有信息都具有时效性.文章的价值,往往跟时间有很大关联.特别是技术类文章,请注意本文创建时间,如果本文过于久远,请读者酌情考量,莫要浪费时间 ...
- Python3爬取百度百科(配合PHP)
用PHP写了一个网页,可以获取百度百科词条.源代码已分享至github:https://github.com/1049451037/xiaobaike/tree/master 那么通过Python来爬 ...
- POJ 1979 dfs和bfs两种解法
fengyun@fengyun-server:~/learn/acm/poj$ cat 1979.cpp #include<cstdio> #include<iostream&g ...
- BZOJ 3555: [Ctsc2014]企鹅QQ hash
3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/p ...
- C# 利用范型与扩展方法重构代码
在一些C#代码中常常可以看到 //An Simple Example By Ray Linn class CarCollection :ICollection { IList list; public ...
- delphi Sender和Tag的用法
var Form1: TForm1; SelectedColor:TColor;//clBlack; //Defaultimplementation{$R *.dfm}procedure TFor ...
- [AngularJS] Consistency between ui-router states and Angular directives
ui-router's states and AngularJS directives have much in common. Let's explores the similarities bet ...
- F5 负载均衡
http://xjsunjie.blog.51cto.com/blog/999372/697285 http://www.eimhe.com/thread-142659-1-1.html
- win7 下 qwt安装教程
一.安装:qwt的安装很简单,可以参看它的install文档.1.解开下载下来的zip文件,比如解开到d:\qt\qwt-5.0.2目录下,修改目录下的qwtconfig.pri文件里面的安装路径,比 ...
- Java_Utils框架
Spring Utils https://github.com/tangyanbo/springmore