您的位置:首页 > 博客中心 > 数据库 >

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

时间:2022-03-15 06:46

本文是讨论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%‘ 是可以被解析的 所以不存在这样的问题

 

热门排行

今日推荐

热门手游