Vaatimukset: Kun käytetään Dapper.Contribia Insert-metodin suorittamiseen, yksittäisen lisätyn datan palautusarvo itsestään kasvavalle ensisijaiselle avainkentälle on lisäyksen jälkeinen arvo, ja kun palautusarvo on suurempi kuin 2147483647, Dapper.Contrib heittää poikkeuksen "Arvo on liian suuri tai liian pieni Int32:lle".
Kun käytetään Dapper.Contribia tietojen lisäämiseen, virhe "Arvo on liian suuri tai liian pieni Int32:lle", ja tietokanta on onnistuneesti lisätty! epäilin ongelmaa ORM-kehyksessä, mutta etsin GitHubista ja löysin sen tunnetuksi ongelmaksi,Dapperin tiimi ei ole korjannut sitä, koska pelkää sen olevan liian merkittävä, ja muut kirjoittajat ovat antaneet Dapperille PR:ää, mutta se on myös suljettu, kuten alla olevassa kuvassa näkyy:
Hyperlinkin kirjautuminen on näkyvissä.
Poikkeuksen syynä on se, että kun itse-arvolisäys on saatu, ottaen esimerkiksi SQL Server -sovittimen, cast heijastuu int-tyyppiseen virheeseen, ja suurin arvo int on (int. MaxValue): 2147483647, kuten alla olevassa kuvassa näkyy:
Metodin toistamiseksi luo uusi taulukko, lisää pääavain 2147483648:sta alkaen, ja SQL-skripti on seuraava:
Viitaten Dapper.Contrib-pakettiin, suorita insert-toiminto seuraavalla koodilla:
Virhe on seuraava:
ratkaisu
Korvaa Dapper.Contrib Dapper.Contrib.Unofficial -paketilla seuraavalla komennolla:
Testi ei enää anna virhettä, kuten seuraavassa kuvassa näkyy:
Vinkki: Dapper.Contrib.Unofficial ei ole täysin testattu, testaa se itse ennen käyttöä!
(Loppu)
|