Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 22966|Resposta: 1

[Fonte] spring.net solução de overflow nhibernate sqldatetime

[Copiar link]
Publicado em 13/09/2017 14:34:58 | | | |
Excesso de tempo em SqlDateTime. Deve ser entre 1/1/1753 00:00:00 e 31/12/9999 11:59:59




Ao realizar a operação de atualização a partir do site, eu continuava recebendo erro, e pensei que fosse a configuração XML ou que algo tivesse dado errado quando a instrução SQL foi executada

Tentei usar o analisador de consultas SQL para pegar as instruções SQL geradas, e descobri qual é o problema com a execução correta? A instrução SQL é a seguinte:

exec sp_executesql N'INSERT NO dbo. LeanLogs (Version, OrganizationId, CustomInfoId, LastLeanAlarmType, NowLeanAlarmType, InsertTime, TreatedTime) VALORES (@p0, @p1, @p2, @p3, @p4, @p5, @p6); select SCOPE_IDENTITY()',N'@p0 int,@p1 int,@p2 int,@p3 int,@p4 int,@p5 datetime,@p6 datetime',@p0=1,@p1=35,@p2=12,@p3=10,@p4=10,@p5='2017-09-13 13:09:41',@p6=NULL
Excesso de tempo em SqlDateTime. Uma resolução deve ser --- entre 01/01/1753 00:00:00 e 31/12/9999 23:59:59

Causa do erro

    Se o valor do tipo de tempo passado para o banco de dados for NULL, ou ao inserir ou atualizar o banco de dados para DateTime.MinValue, o valor do campo data-hora é nulo por padrão.
    NULL aqui se refere a null no código do programa, e a maioria dos cenários em que isso acontece são: uma variável do tipo tempo é definida no programa, e ela é passada para o banco de dados (ou procedimento armazenado) sem atribuir um valor. Neste momento, o valor dessa variável é atribuído por padrão como 01/01/01.
     Como o campo do tipo DataHora no banco de dados, o valor mínimo é 1/1/1753 12:00:00, enquanto o . NET Framework, o tipo DateTime, o valor mínimo é 1/1/0001 0:00:00, obviamente está fora da faixa mínima de valores do valor SQL, resultando em erro de transbordamento de dados.
    Vamos dar uma olhada em como ver o tempo mínimo mínimo em .NET e SQL através de C#:


Efeito de saída:



No fim, foi ajustado por mais de dez minutos,

As causas finais de erro são as seguintes:

Um dos tipos de atributos do objeto também é um objeto, ou seja, a tabela possui uma chave estrangeira, e um novo atributo de data-hora é adicionado à tabela de chave estrangeira, que não recebe valor atribuído e não é definido como um tipo nulo

Ao adicionar ou atualizar um objeto, a data-hora do objeto chave estrangeira é automaticamente associada ao valor padrão, porque o tempo do valor padrão .net é menor que o tempo mínimo padrão do banco de dados

Solução: Defina a propriedade do tipo data-hora do objeto chave estrangeira para tipo nullable, ajude colegas a resolvê-lo perfeitamente!







Anterior:.net/c# Operação redis adição, exclusão, modificação e consulta de cache [código-fonte]
Próximo:asp.net Análise de anomalias do site
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com