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

Posted zhangzhanhong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于EFCore对Mysql的支持 多字段拼接查询相关的知识,希望对你有一定的参考价值。

本文是讨论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的支持 多字段拼接查询的主要内容,如果未能解决你的问题,请参考以下文章

MySQL字段操作与数据处理

Mysql 拼接多个字段作为查询条件查询方法

关于group_concat函数拼接字符超长的问题

MYSQL 让两个字段拼接查询

MySQL数据库的函数使用:使用字符串拼接函数实现MySQL查询结果的拼接

mysql GROUP_CONCAT 查询某个字段(查询结果默认逗号拼接)