Krav: Når Dapper.Contrib brukes til å kjøre Insert-metoden, er returverdien til en enkelt innsatt data for det selvinkrementerende primærnøkkelfeltet verdien etter innsetting, og når returverdien er større enn 2147483647, vil Dapper.Contrib kaste unntaket "Verdien er for stor eller for liten for Int32".
Når jeg bruker Dapper.Contrib for å sette inn data, oppstår feilmeldingen "Verdien er for stor eller for liten for Int32", og databasen er vellykket satt inn! mistenkte at det var et problem med ORM-rammeverket, søkte deretter på GitHub og fant ut at det var et kjent problem,Dapper-teamet har ikke fikset det fordi de er bekymret for at det vil få for stor effekt, og andre forfattere har gitt PR til Dapper, men det har også blitt lagt ned, som vist i figuren nedenfor:
Innloggingen med hyperkoblingen er synlig.
Årsaken til unntaket er at etter å ha hentet selv-merverdien, med SQL Server-adapteren som eksempel, kastes casten til en int-typefeil, og maksimal verdi av int er (int. MaxValue): 2147483647, som vist i figuren nedenfor:
For å gjenskape metoden, lag en ny tabell, legg til primærnøkkelen fra 2147483648, og SQL-skriptet er som følger:
Ved å referere til Dapper.Contrib-pakken, utfør innsettingsoperasjonen med følgende kode:
Feilen er som følger:
løsning
Erstatt Dapper.Contrib med Dapper.Contrib.Unofficial pakken med følgende kommando:
Testen gir ikke lenger en feil, som vist i følgende figur:
Tips: Dapper.Contrib.Unofficial er ikke fullt testet, vennligst test det selv før du bruker det!
(Slutt)
|