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!
|