Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 22966|Svar: 1

[Källa] spring.net nhibernate sqldatetime overflow solution

[Kopiera länk]
Publicerad på 2017-09-13 14:34:58 | | | |
SqlDateTime-överflöd. Måste vara mellan 1/1/1/1753 00:00:00 och 99999:12-31 23:59:59




När jag utförde uppdateringsoperationen från webbplatsen fick jag hela tiden ett fel, och jag trodde att det var XML-konfigurationen eller att något hade gått fel när SQL-satsen kördes

Jag försökte använda SQL query analyzer för att hämta de genererade SQL-satserna, och upptäckte vad problemet är med korrekt exekvering? SQL-satsen är följande:

exec sp_executesql N'INSERT INTO dbo. LeanLogs (Version, OrganizationId, CustomInfoId, LastLeanAlarmType, NowLeanAlarmType, InsertTime, TreatedTime) VÄRDEN (@p0, @p1, @p2, @p3, @p4, @p5, @p6); välj 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
SqlDateTime-överflöd. Ett beslut måste --- mellan 1/1/1/1753 00:00:00 och 99999 31/12 23:59:59

Felorsak

    Om värdet av tidstypen som skickas till databasen är NULL, eller när databasen infogas eller uppdateras för DateTime.MinValue, är datumtidsfältvärdet som standard null.
    NULL syftar här på null i programkoden, och de flesta scenarier där detta händer är: en tidstypvariabel definieras i programmet och skickas till databasen (eller den lagrade proceduren) utan att tilldela något värde. Vid denna tidpunkt tilldelas värdet av denna variabel 01/01/01 som standard.
     Eftersom fältet DateTime är typfältet i databasen är minimivärdet 1/1/1753 12:00:00, medan . NET Framework, DateTime-typen, har minsta värde på 1/1/0001 0:00:00, uppenbarligen ligger det utanför minimivärdeintervallet för SQL-värdet, vilket resulterar i ett dataöverflödesfel.
    Låt oss titta på hur man ser .net och sql maxar min-tid genom C#:


Utgångseffekt:



Till slut var den justerad i mer än tio minuter,

De slutliga felorsakerna är följande:

En av attributtyperna för objektet är också ett objekt, det vill säga att tabellen har en främmande nyckel, och ett nytt datum-tidsattribut läggs till i främmande nyckeltabellen, som inte tilldelas något värde och inte är satt till en nullbar typ

När man lägger till eller uppdaterar ett objekt kopplas datumtiden för främmande nyckelobjektet automatiskt till standardvärdet, eftersom tiden för .net-standardvärdet är mindre än databasens standardminsta tid

Lösning: Sätt egenskapen för en datetime-typ för främmande nyckelobjektet till nullbar typ, hjälp kollegor att lösa det perfekt!







Föregående:.net/c# Operation Redis cachetillägg, radering, modifiering och fråga [källkod]
Nästa:asp.net Felanalys av webbplatsanomalier
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com