Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 22966|Risposta: 1

[Fonte] spring.net soluzione di overflow di nhibernate sqldatetime

[Copiato link]
Pubblicato su 13/09/2017 14:34:58 | | | |
Eccesso di SqlDateTime. Deve essere tra il 1/1/1753 00:00:00 e il 31/12/9999 11:59:59




Durante l'operazione di aggiornamento dal sito, continuavo a ricevere un errore e pensavo fosse la configurazione XML o che qualcosa fosse andato storto quando l'istruzione SQL veniva eseguita

Ho provato a usare l'analizzatore di query SQL per recuperare le istruzioni SQL generate e ho scoperto che qual è il problema con l'esecuzione corretta? La dichiarazione SQL è la seguente:

executive sp_executesql N'INSERT IN dbo. LeanLogs (Versione, OrganizationId, CustomInfoId, LastLeanAlarmType, NowLeanAlarmType, InsertTime, TreatedTime) VALORI (@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
Eccesso di SqlDateTime. Una risoluzione deve essere --- tra il 1/1/1753 00:00:00 e il 31/12/9999 23:59:59

Causa di errore

    Se il valore del tipo di tempo passato al database è NULL, oppure quando si inserisce o si aggiorna il database per DateTime.MinValue, il valore del campo datatime è nullo di default.
    NULL qui si riferisce a null nel codice del programma, e la maggior parte degli scenari in cui ciò accade sono: una variabile di tipo temporale viene definita nel programma e viene passata al database (o alla procedura memorizzata) senza assegnare un valore. Al momento, il valore di questa variabile viene assegnato di default 01/01/01.
     Poiché il campo di tipo DateTime nel database, il valore minimo è 1/1/1753 12:00:00, mentre il . NET Framework, il tipo DateTime, il valore minimo è 1/1/0001 0:00:00, ovviamente è fuori dall'intervallo minimo del valore SQL, causando un errore di overflow dei dati.
    Diamo un'occhiata a come vedere .net e sql max tempo minimo tramite C#:


Effetto di output:



Alla fine, fu ristrutturato per più di dieci minuti,

Le cause finali di errore sono le seguenti:

Uno dei tipi di attributo dell'oggetto è anch'esso un oggetto, cioè la tabella ha una chiave estranea, e un nuovo attributo datetime viene aggiunto alla tabella della chiave esterna, che non ha un valore assegnato e non è impostato come tipo nullable

Quando si aggiunge o si aggiorna un oggetto, la data-ora dell'oggetto chiave esterna viene automaticamente associata al valore predefinito, perché il tempo del valore predefinito .net è inferiore al tempo minimo predefinito del database

Soluzione: imposta la proprietà di un tipo datatime dell'oggetto chiave esterna su nullable type, aiuta i colleghi a risolverla perfettamente!







Precedente:.net/c# Operazione Redis Aggiunta, Cancellazione, Modifica e Query della Cache [Codice sorgente]
Prossimo:asp.net Analisi degli errori anomali sul sito web
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com