EF Core 8 Preview 1 - DateOnly

6 minuto(s) de leitura - February 27, 2023

01


Esse é meu lugar especial onde adoro compartilhar novidades e pensamentos sobre .NET, Performance e Acesso a Dados com a comunidade.

Introdução

Quando a Microsoft lançou o Entity Framework Core 8 além de tantas outras funcionalidades, ganhamos também mais um recurso interessante, o qual não precisamos ficar criando conversores, falo isso porque o EF Core fornece essa possibilidade.

Bom, a novidade é o DateOnly e TimeOnly, que são tipos que foram lançados lá na versão do .NET 6 e que inclusive vários outro provedores de acesso a dados já tinham implementado, como por exemplo o de acesso ao PostgreSQL, e aí fica a pergunta porque o EF Core levou mais tempo para implementar esse recurso, bom a resposta é simples, como o EF Core para SQL Server tem uma forte dependência com o driver de acesso ao SQL Server, primeiramente seria necessário aguardar que o time de desenvolvimento do driver adicionasse esses novos tipos no driver.

Então agora é possível utilizar esses novos tipos com o EF Core 8, veja um exemplo simples.
public class Alarme
{
    public int Id { get; set; }
    public string Descricao { get; set; };
    public DateOnly Data { get; set; }
    public TimeOnly Hora { get; set; }
}
Ao fazer o mapeamento desse entidade, quando o EF Core gerar o script para criar a tabela no banco de dados basicamente teremos o seguinte script:
CREATE TABLE [Alarmes] (
    [Id] int NOT NULL IDENTITY,
    [Descricao] nvarchar(max) NOT NULL,
    [Data] date NOT NULL,
    [Hora] time  NOT NULL,
    CONSTRAINT [PK_Alarmes] PRIMARY KEY ([Id]));
DateOnly data = DateOnly.Parse("2023-01-01");
TimeOnly hora = TimeOnly.Parse("01:01:01");

var alarme = context
    .Alarmes
    .FirstOrDefault(p=> p.Data == data && p.Hora == hora); 

Pra quem utiliza o SQL Server e armazena dados do tipo date ou time, essa é uma funcionalidade bem interessante!

Contatos

Fico por aqui, mas pode me contatar por meio de minhas redes sociais 😄
twitter: @ralmsdeveloper
linkedin: @ralmsdeveloper

Deixe um comentário