Zahteve: Pri uporabi Dapper.Contrib za izvedbo metode Insert je vrnjena vrednost enega vstavljenega podatka za polje samopovečevanja primarnega ključa vrednost po vstavljanju, in ko je vrnjena vrednost večja od 2147483647, bo Dapper.Contrib vrgel izjemo "Vrednost je prevelika ali premajhna za Int32".
Ko uporabljate Dapper.Contrib za vstavljanje podatkov, se pojavi napaka "Vrednost je prevelika ali premajhna za Int32" in baza podatkov je bila uspešno vstavljena! sumil sem, da gre za težavo v ORM ogrodju, nato pa sem iskal na GitHubu in ugotovil, da gre za znano težavo,Ekipa Dapper tega ni popravila, ker jih skrbi, da bo preveč vplivno, drugi avtorji pa so Dapperju zagotovili PR, a je bil tudi zaprt, kot je prikazano na spodnji sliki:
Prijava do hiperpovezave je vidna.
Razlog za izjemo je, da se po pridobitvi samo-dodane vrednosti, če vzamemo kot primer SQL Server adapterja, cast prenese na napako tipa int, največja vrednost int pa je (int. MaxValue): 2147483647, kot je prikazano na spodnji sliki:
Za ponovitev metode ustvarite novo tabelo, dodate primarni ključ od 2147483648, SQL skripta pa je naslednja:
S sklicevanjem na paket Dapper.Contrib izvedite operacijo vstavljanja z naslednjo kodo:
Napaka je naslednja:
rešitev
Zamenjajte Dapper.Contrib z Dapper.Contrib.Unofficial paket z naslednjim ukazom:
Test ne daje več napake, kot je prikazano na naslednji sliki:
Nasvet: Dapper.Contrib.Unofficial ni popolnoma testiran, prosim, preizkusite ga sami, preden ga uporabite!
(Konec)
|