Vereisten: Bij het gebruik van Dapper.Contrib om de Insert-methode uit te voeren, is de retourwaarde van één ingevoegde data voor het zelfverhogende primaire sleutelveld de waarde na invoeging, en wanneer de returnwaarde groter is dan 2147483647, zal Dapper.Contrib de uitzondering "De waarde is te groot of te klein voor Int32" gooien.
Bij het gebruik van Dapper.Contrib om data in te voegen, verschijnt de foutmelding "De waarde is te groot of te klein voor Int32", en is de database succesvol ingevoegd! vermoedde dat het een probleem was met het ORM-framework, en zocht toen op GitHub en vond het een bekend probleem,Het Dapper-team heeft het niet opgelost omdat men vreest dat het te veel impact zal hebben, en andere auteurs hebben PR aan Dapper gegeven, maar het is ook gesloten, zoals getoond in de onderstaande figuur:
De hyperlink-login is zichtbaar.
De reden voor de uitzondering is dat na het verkrijgen van de zelftoegevoegde waarde, als voorbeeld de SQL Server-adapter, de cast wordt omgezet naar een int-type fout, en de maximale waarde van int is (int. MaxValue): 2147483647, zoals weergegeven in de onderstaande figuur:
Om de methode te reproduceren, maak je een nieuwe tabel aan, voeg je de primaire sleutel toe vanaf 2147483648, en het SQL-script is als volgt:
Door het Dapper.Contrib-pakket te refereren, voer je de insert-operatie uit met de volgende code:
De fout is als volgt:
oplossing
Vervang Dapper.Contrib door het Dapper.Contrib.Unofficial pakket met het volgende commando:
De test geeft geen fout meer, zoals weergegeven in de volgende figuur:
Tip: Dapper.Contrib.Unofficial is niet volledig getest, test het alsjeblieft zelf voordat je het gebruikt!
(Einde)
|