Atualização .Net5 para .Net6 com banco Postgres
Objetivo
O objetivo deste estudo é analisar o impacto em atualizar a versão do Net. 5 para Net 6. Devido as mudanças no Npgsql 6.0.
Introdução
Dentro deste estudo, será pontuada as mudanças que ocorrerão no Npgsql 6.0 e o que terá que mudar no código para atender.
Principal mudança Npgsql 6.0
Melhorias de timestamp
-
Suporte para
timestamp with time zone
etimestamp without time zone
foi racionalizado e simplificado e alinhado com as melhores práticas do PostgreSQL. Em particular, o padrão "UTC em todos os lugares" é muito melhor suportado por meio dotimestamp with time zone
tipo PostgreSQL, que é a maneira recomendada de lidar com timestamps. Uma explicação detalhada está disponível nesta postagem do blog , abaixo está um resumo das principais melhorias.- Os carimbos de data/hora UTC foram claramente separados dos carimbos de data/hora não-UTC, alinhando-se com os tipos do PostgreSQL. Os primeiros são representados por
timestamp with time zone
e DateTime com Kind UTC, os últimos portimestamp without time zone
e DateTime com Kind Local ou Unspecified. Recomenda-se usar carimbos de data/hora UTC sempre que possível. - O Npgsql não executa mais nenhuma conversão implícita de fuso horário ao ler ou gravar qualquer valor de carimbo de data / hora - o valor no banco de dados é o que você obtém e o fuso horário da máquina não desempenha mais nenhum papel ao ler/gravar valores.
- O Npgsql não suporta mais representações de data/hora que não podem ser totalmente rodadas para o banco de dados. Se não puder ser totalmente armazenado como está, você não poderá gravá-lo.
- Uma opção de compatibilidade permite desativar o novo comportamento para manter a compatibilidade com versões anteriores.
- Os carimbos de data/hora UTC foram claramente separados dos carimbos de data/hora não-UTC, alinhando-se com os tipos do PostgreSQL. Os primeiros são representados por
O texto acima foi retirado https://www.npgsql.org/efcore/release-notes/6.0.html?tabs=annotations click no link para mais detalhes.
Mudança necessárias no código do Simeron
Antes da versão 6.0 do Npgsql, as propriedade com o tipo DateTime eram mapeadas pelo entity framework como "timestamp without time zone
" -> 2020-01-01 12:00:00 e adicionava o tipo timespamp no banco de dados, após a atualização o Tipo DateTime passou a ser mapeado pelo entity framework "timestamp with time zone
" -> 2020-01-01 12:00:00+02 e adiciona o tipo timespampz no banco de dados.
Conclusão
Todos o campo criado com DateTime no Npgsql 6.0. deve conter a marcação de fuso horário, para que não ocorra erro na comunicação com o banco de dados.
Superintendente
Delner Freire
Diretor
Maico Moreira da Silva
Gerente de Desenvolvimento
Jonatas Justiniano Lima
Product Owner
Gabriel Santi Binda
Scrum Master
Wagner Moreira Melo
Time de Desenvolvimento
Tambakiss
Membros do Time Tambaqui |
Adelle Camarão Monteiro |
Elias Braga |
Leticia Gondim de Souza |
Raissa de Sousa Stolduski |
Taillon Miguel Gonçalves |
Vinicius Da Rosa Pereira |
Wagner Moreira Melo |