EF Core 2.x – Operador Like : Propriedade EF.Functions
Hoje o José Carlos Macoretti vai apresentar o recurso do operador Like diretamente no código da consulta usando o EF Core 2.x.

| Hoje vou apresentar o recurso do operador Like diretamente no código da consulta usando o EF Core 2.x. |
Desde a versão 2.0 do Entity Framework Core temos disponível o recurso do operador Like que podemos usar em consultas.
Para isso usamos a propriedade EF.Functions que fornece métodos CLR que são traduzidos para funções de banco de dados↳Banco de dados134 conteúdosSQL ou NoSQL: eis a questão!!Data · mar 2020Banco de dados: como organizar e dar segurança para milhões de dados de loteriasData · mai 20215 serviços gratuitos na cloud para bancos de dados PostgresData · fev 2025Ver tudo em Data → quando usados em consultas LINQ to Entities.
Nota: Se você chamar esses métodos em outros contextos (por exemplo, LINQ to Objects) irá obter uma NotSupportedException.
Vamos ver isso funcionando na prática.
Vamos supor que já temos um banco de dados chamado Acervo e a tabela Musicas com a seguinte estrutura e alguns dados já inseridos:
![]() |
![]() |
Abaixo vemos o script SQL para criar a tabela Musicas:
USE [Cadastro]
GO
CREATE TABLE [dbo].[Musicas](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Artista] [nvarchar](50) NOT NULL,
[Titulo] [nvarchar](50) NOT NULL,
[Local] [nvarchar](100) NOT NULL,
CONSTRAINT [PK_Musicas] PRIMARY KEY CLUSTERED
(
[Id] ASC
)ON [PRIMARY]
GO |
recursos usados:
– Visual Studio 2017 Community
– SQL Server↳Leia tambémSQL Server – Utilizando colunas calculadas (ou colunas computadas) para Performance TuningData · abr 2019 2012 Express
– Entity Framework Core 2.1
Criando o projeto no VS 2017 Community
Abra o VS 2017 Community e crie um novo projeto .NET↳.NET113 conteúdosNovidades do .NET 9 – o tipo genérico OrderedDictionaryDev (Back & Front) · dez 2024Novidades .NET 10: novas formas de uso do .NET CLIDev (Back & Front) · dez 2025Novidades do .NET 5: implementando um proxy reverso com YARP + ASP.NET 5Dev (Back & Front) · nov 2020Ver tudo em Dev (Back & Front) → Core do tipo Console App(.NET Core) chamado EFCore_Like.
Inclua no projeto a referência para o Microsoft.EntityFrameworkCore.SqlServer :

Observe que estou usando a versão 2.21, que é a versão mais estável, mas podemos usar a versão 2.1 ou superior.
Crie no projeto a pasta Model e nesta pasta inclua duas classes:
- Musica – classe de domínio
- AppDbContext – classe de contexto
A seguir inclua o código abaixo na classe Musica que representa no nosso modelo de domínio:
1- Musica
namespace EFCore_Like.Models
{
public class Musica
{
public int Id { get; set; }
public string Artista { get; set; }
public string Titulo { get; set; }
public string Local { get; set; }
}
}
|
A seguir inclua o código abaixo na classe AppDbContext que representa o nosso contexto:
2- AppDbContext
using Microsoft.EntityFrameworkCore; using System.Linq; namespace EFCore_Like.Models
{
public class AppDbContext : DbContext
{
public DbSet<Musica> Musicas { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Data Source=Macoratti;Initial Catalog=Cadastro;Integrated Security=True");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Musica>()
.HasKey(e => e.Id);
}
}
}
|
Neste código definimos a propriedade DbSet<> mapeando para a tabela Musicas, e, definimos também a string de conexão com o banco de dados Cadastro.
O código no método OnModelCreating usa a Fluent API para mapear a propriedade Id como chave primária da tabela.
Agora vamos definir uma consulta SQL usando a propriedade EF.Functions onde podemos usar
No arquivo Program.cs inclua o código abaixo:
using EFCore_Like.Models; using Microsoft.EntityFrameworkCore; using System.Linq; using static System.Console; namespace EFCore_Like
{
class Program
{
static void Main(string[] args)
{
using (var contexto = new AppDbContext())
{
var resultado = contexto.Musicas
.Where(m => EF.Functions.Like(m.Titulo, "%foni%"))
.ToList();
foreach(var musica in resultado)
{
System.Console.WriteLine( $"{musica.Artista} - {musica.Titulo}");
}
ReadLine();
}
}
}
}
|
Na consulta usamos a propriedade EF.Functions e o método de extensão Like onde aplicamos o filtro à propriedade Titulo da música usando os curingas % na expressão : “%foni%” que vai retornar todos os registros cuja coluna Titulocontenha o texto ‘foni‘.
Executando projeto temos o seguinte resultado:

Além do Like também podemos usar os seguintes métodos de extensão na propriedade EF.Functions:
- Contains
- DateDiffDay
- DateDiffHour
- DateDiffMicroSecond
- DateDiffMiliSecond
- DateDiffMinute
- DateDiffMonth
- DateDiffNanoSecond
- DateDiffSecond
- DateDiffYear
- FreeText
Pegue o código completo do projeto aqui:
EFCore_Like.zip









