Krav: När Dapper.Contrib används för att köra Insert-metoden är returvärdet för en enda insatt data för det självinkrementrande primärnyckelfältet värdet efter insättning, och när returvärdet är större än 2147483647 kommer Dapper.Contrib att kasta undantaget "Värdet är för stort eller för litet för Int32".
När jag använder Dapper.Contrib för att infoga data visas felet "Värdet är för stort eller för litet för Int32", och databasen har lyckats infogas! misstänkte att det var ett problem med ORM-ramverket, sökte sedan på GitHub och hittade att det var ett känt problem,Dapper-teamet har inte åtgärdat det eftersom de är oroliga för att det ska bli för påverkande, och andra författare har gett PR till Dapper, men det har också lagts ner, som visas i figuren nedan:
Inloggningen med hyperlänken är synlig.
Anledningen till undantaget är att efter att ha erhållit självvärdeadderiet, med SQL Server-adaptern som exempel, kastas casten till ett int-typfel, och det maximala värdet av int är (int. MaxValue): 2147483647, som visas i figuren nedan:
För att reproducera metoden, skapa en ny tabell, lägg till primärnyckeln med start från 2147483648, och SQL-skriptet är följande:
Genom att referera till Dapper.Contrib-paketet utför insättningsoperationen med följande kod:
Felet är följande:
lösning
Byt ut Dapper.Contrib mot paketet Dapper.Contrib.Unofficial med följande kommando:
Testet ger inte längre något fel, som visas i följande figur:
Tips: Dapper.Contrib.Unofficial är inte helt testad, testa det själv innan du använder det!
(Slut)
|