Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 22966|Svar: 1

[Kilde] spring.net nhibernate sqldatetime overflow solution

[Kopier link]
Opslået på 13/09/2017 14.34.58 | | | |
SqlDateTime overflow. Skal være mellem 1/1/1753 00:00:00 og 31/12/9999 23:59:59




Da jeg udførte opdateringsoperationen fra hjemmesiden, fik jeg hele tiden en fejl, og jeg troede, det var XML-konfigurationen, eller at noget var gået galt, da SQL-sætningen blev udført

Jeg prøvede at bruge SQL query analyzer til at hente de genererede SQL-sætninger og fandt ud af, hvad problemet er med korrekt eksekvering? SQL-udsagnet er som følger:

exec sp_executesql N'INSERT INTO dbo. LeanLogs (Version, OrganizationId, CustomInfoId, LastLeanAlarmType, NowLeanAlarmType, InsertTime, TreatedTime) VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6); vælg 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 overflow. En resolution skal --- mellem 1/1/1753 kl. 00:00:00 og 31/12/9999 kl. 23:59:59

Fejlårsag

    Hvis værdien af tidstypen, der sendes til databasen, er NULL, eller når databasen indsættes eller opdateres for DateTime.MinValue, er datetime-feltværdien som standard null.
    NULL refererer her til null i programkoden, og de fleste scenarier, hvor dette sker, er: en tidstypevariabel defineres i programmet, og den sendes videre til databasen (eller den lagrede procedure) uden at tildele en værdi. På dette tidspunkt tildeles værdien af denne variabel som standard 01/01/01.
     Siden DateTime-typefeltet i databasen er minimumsværdien 1/1/1753 12:00:00, mens . NET Framework, DateTime-typen, minimumsværdien er 1/1/0001 0:00:00, det er selvfølgelig uden for minimumsværdiområdet for SQL-værdien, hvilket resulterer i en dataoverløbsfejl.
    Lad os se på, hvordan man kan se .net og sql maks min. tid gennem C#:


Output-effekt:



I sidste ende blev det pillet ved i mere end ti minutter,

De endelige fejlårsager er som følger:

En af objektets attributtyper er også et objekt, det vil sige, tabellen har en fremmednøgle, og en ny datetime-attribut tilføjes til fremmednøgletabellen, som ikke tildeles en værdi og ikke sættes til en nullbar type

Når man tilføjer eller opdaterer et objekt, knyttes datotidspunktet for fremmednøgleobjektet automatisk til standardværdien, fordi tidspunktet for .net-standardværdien er mindre end databasens standardminimumstid

Løsning: Sæt egenskaben for en dato-tidstype for fremmednøgleobjektet til nullbar type, hjælp kolleger med at løse det perfekt!







Tidligere:.net/c# Operation Redis cache-tilføjelse, sletning, ændring og forespørgsel [kildekode]
Næste:asp.net Fejlanalyse af hjemmesideanomali
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com