Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 22966|Răspunde: 1

[Sursă] spring.net soluție nhibernate sqldatetime overflow

[Copiază linkul]
Postat pe 13.09.2017 14:34:58 | | | |
Debordarea SqlDateTime. Trebuie să fie între 01.01.1753 00:00:00 și 31.12.9999 23:59:59




Când am efectuat operațiunea de actualizare de pe site, am primit mereu o eroare și am crezut că este vorba de configurația XML sau că ceva a mers prost când s-a executat instrucțiunea SQL

Am încercat să folosesc analizorul de interogări SQL pentru a prelua instrucțiunile SQL generate și am descoperit că care este problema cu execuția corectă? Instrucțiunea SQL este următoarea:

executiv sp_executesql N'INSERT ÎN dbo. LeanLogs (Version, 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
Debordarea SqlDateTime. O rezoluție trebuie --- între 1.01.1753 00:00:00 și 31.12.9999 23:59:59

Cauza erorii

    Dacă valoarea tipului de timp transmis bazei de date este NULL, sau la inserarea sau actualizarea bazei de date pentru DateTime.MinValue, valoarea câmpului datetime este nulă în mod implicit.
    NULL aici se referă la null în codul programului, iar majoritatea scenariilor în care acest lucru se întâmplă sunt: o variabilă de tip timp este definită în program și este transmisă bazei de date (sau procedurii stocate) fără a atribui o valoare. În acest moment, valoarea acestei variabile este atribuită implicit 01/01/01.
     Deoarece câmpul de tip DateOra din baza de date, valoarea minimă este 1/1/1753 12:00:00, în timp ce . NET Framework, tipul DateTime, valoarea minimă este 1/1/0001 0:00:00, evident că este în afara intervalului minim de valori al valorii sql, rezultând o eroare de depășire a datelor.
    Să vedem cum poți vedea .net și SQL Max timpul minim prin C#:


Efectul de ieșire:



În cele din urmă, a fost ajustat mai bine de zece minute,

Cauzele finale de eroare sunt următoarele:

Unul dintre tipurile de atribute ale obiectului este, de asemenea, un obiect, adică tabelul are o cheie străină, iar un nou atribut datetime este adăugat în tabelul cheii externe, care nu are o valoare atribuită și nu este setat la un tip anulabil

La adăugarea sau actualizarea unui obiect, data-ora obiectului cu cheie externă este atașată automat valorii implicite, deoarece timpul valorii implicite .net este mai mic decât timpul minim implicit al bazei de date

Soluție: Setează proprietatea unui tip datetime al obiectului cu cheie externă la tip nullable, ajută-i pe colegi să o rezolve perfect!







Precedent:.net/c# operație redis adăugare, ștergere, modificare și interogare [cod sursă]
Următor:asp.net Analiza erorilor anomaliilor pe site-ul web
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com