With NOLOCK & DateDIFF

3 minuto(s) de leitura - June 14, 2018

01

Fala pessoal, tudo bem?! 💚

Extensão para EntityFramework Core

Exatamente dia 02/06/2018 02:00 AM, em um quarto de hotel de São Paulo, surge uma conversa bem legal sobre e como implementar o WITH NOLOCK(um hint bem usado para consultas) juntamente com um amigo discutimos o porquê?! Então comecei a codificar algumas coisas, e foi onde surgiu a extensão para o EntityFramework Core “WITH (NOLOCK)”.

Juntamente com a extensão do WithNoLock, também temos outras como a tradução do DATEDIFF para SQL Server.


Os bits estão disponíveis em:

Nuget: @Nuget-Ralms.EntityFrameworkCore.Extensions
Github: @Github-Ralms.EntityFrameworkCore.Extensions

Vejamos como habilitar & utilizar o WithNoLock:

public class SampleContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder
            .UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=SampleExtension;Integrated Security=True;")
            .RalmsExtendFunctions();
    }

    protected override void OnModelCreating(ModelBuilder modelo)
    {
        modelo.EnableSqlServerDateDIFF();
    }
}

Como Utilizar:

var query = _db
    .Blogs
    .WithNoLock() // Anotação do With (NoLock)
    .ToList();  


Output SQL:

SELECT [p].[Id], [p].[Date], [p].[Name]
FROM [Blogs] AS [p] WITH (NOLOCK)  

Usando o DATEDIFF

var list = _db
    .Blogs
    .Where(p => EFCore.DateDiff(DatePart.day, DateTimeOffset.Now, p.Date) < 50) 
    .ToList();


Output SQL:

SELECT [p].[Id], [p].[Date], [p].[Name]
FROM [Blogs] AS [p]
WHERE DATEDIFF(day, GETDATE(), [p].[Date]) < 50



Pessoal, fico por aqui #efcore

Deixe um comentário