DbUpdateException ao salvar um registro usando ASP.NET MVC

24/11/2019

5

Tenho uma tabela de ocorrências que salva datas de fechamento e atualização de ocorrências, todas elas no formato datetime. Ao tentar salvar o registro, além de ocorrer uma DbUpdateException, aparece uma InnerException que informa que a conversão de datetime2 para datetime deu 'out of range', ou seja, estourou o limite de um dos campos. Um dos campos na action Create aparece da seguinte forma:

ocorrencia.dt_fecha_ocorrencia = DateTime.Now;
ocorrencia.dt_atualizacao_ocorrencia = DateTime.Now;


Como corrigir esse problema, sendo que meus models/tabelas foram gerados a partir do banco de dados?
Responder

Post mais votado

25/11/2019

Olá Danilo,

Antes de mais nada, verifique qual tipo está definido para essas colunas no seu banco, DateTime2 ou DateTime. O primeiro passo é deixar igual, pois em algumas situações, pode haver conflito na conversão de um para outro. Se tiver como DateTime2 no seu banco, experimente trocar para DateTime.
Se não resolver, qual CultureInfo você está usando no seu projeto?
Se você estiver usando "en-US", o retorno do DateTime.Now será "6/19/2015 10:03:06 AM", se o Collation do seu banco não for compatível com esse retorno, pode dar esse erro também.

Exemplo de como usar o CultureInfo:
using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      DateTime localDate = DateTime.Now;
      String[] cultureNames = { "en-US", "en-GB", "fr-FR",
                                "de-DE", "ru-RU" };

      foreach (var cultureName in cultureNames) {
         var culture = new CultureInfo(cultureName);
         Console.WriteLine(": ", cultureName,
                           localDate.ToString(culture));
      }
   }
}
// The example displays the following output:
//       en-US: 6/19/2015 10:03:06 AM
//       en-GB: 19/06/2015 10:03:06
//       fr-FR: 19/06/2015 10:03:06
//       de-DE: 19.06.2015 10:03:06
//       ru-RU: 19.06.2015 10:03:06
//       Fonte: https://docs.microsoft.com/pt-br/dotnet/api/system.datetime.now?view=netframework-4.8

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar