Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro ao gravar em campo do tipo DateTime

Eu criei um campo datetime na minha classe de usuario para guardar o ultimo acesso.

  public DateTime UltimoAcesso { get; set; }

Feito isso, eu faço uso do Migrations para adicionar este campo na minha tabela, como mostra abaixo:

public partial class UltimoAcesso : DbMigration
    {
        public override void Up()
        {
            AddColumn("dbo.Usuarios", "UltimoAcesso", c => c.DateTime(nullable: false, defaultValue: null));
        }

        public override void Down()
        {
            DropColumn("dbo.Usuarios", "UltimoAcesso");
        }
    }

Na hora do alter table eu marco a opção defaultValue: null

Faço o update-database do migration... até aqui maravilha.

Mas quando tento salvar as informações do usuário eu topo o seguinte erro: "The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.\r\nThe statement has been terminated"

Por mais que eu diga que, gostaria que o valor padrão deste campo fosse null ele tenta gravar '1900-01-01T00:00:00.000'

Parece que o defaultvalue: null não serve pra nada.

Alguém consegue ajudar?

2 respostas

Oi Maycon, talvez eu esteja falando uma grande besteira, já que não sou especialista em C#. Será que em algum lugar na sua classe não está rolando uma inicialização do atributo? Pelo código parece que não, mas é sempre bom dar uma conferida.

Caso o que eu tenha falado não faça sentido, foi mal :(.

solução!

Que nada Alberto Souza, qualquer tentativa de ajuda é bem vinda.. Neste caso não é isso! Resolvi o problema da seguinte maneira...

Inicialmente pensei que fosse problema na migração, mas não tem nada a ver! O problema é que o asp tenta passar um valor de data quando percebe que o campo está vazio, acho que por padrão ele não aceita isso(pode ser que quem esteja falando besteira agora, sou eu.. rs) O fato é que na chamada da classe eu logo passo um datetime.now pro campo e não deixo ele vazio(null), e tão pouco deixo o asp resolver isso pra mim. Pode não ter sentido nenhum isso tudo que acontece, mas está tudo funcionando como eu gostaria. rsrsrs