码迷,mamicode.com
首页 > 数据库 > 详细

关于EFCore对Mysql的支持 多字段拼接查询

时间:2018-02-26 17:36:40      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:ast   contains   sele   contact   name   测试   模糊   orm   concat   

本文是讨论EFCore对Mysql的支持问题

本文中测试使用的ORM为MySql.Data.EntityFrameworkCore 6.10.6版本

在系统中有一张表:crm.contacts 中包含了first_name和last_name两个字段

通常来说需要查询的时候 需要将这两个字段连接一起进行模糊查询

Mysql支持的sql语句为 select * from `crm.contacts` where concat(first_name, last_name)  like concat(‘%‘, ‘abc‘, ‘%‘)

如果在程序中使用dbcontext.CrmContacts.Where(s => (s.FirstName + s.LastName).Contains("abc")),

  由Nero Profile SQL 截获该ORM框架解析出来的SQL语句为 select * from `crm.contacts` where first_name+ last_name like concat(‘%‘, ‘abc‘, ‘%‘)

  Mysql并不支持上述的sql语句

如果在程序中使用dbcontext.CrmContacts.Where(s => string.Contat(s.FirstName + s.LastName).Contains("abc")),

  由Nero Profile SQL 截获该ORM框架解析出来的SQL语句为 select * from `crm.contacts`

       ORM会获取该表的所有内容在内存中进行查询

但是在SQLServe中select * from [crm.contacts] where first_name+ last_name like ‘%abc%‘ 是可以被解析的 所以不存在这样的问题

 

关于EFCore对Mysql的支持 多字段拼接查询

标签:ast   contains   sele   contact   name   测试   模糊   orm   concat   

原文地址:https://www.cnblogs.com/Zhangzhanhong/p/8473987.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!