Requisiti: Quando si utilizza Dapper.Contrib per eseguire il metodo Insert, il valore di ritorno di un singolo dato inserito per il campo chiave primaria auto-incrementante è il valore dopo l'inserimento, e quando il valore di ritorno è maggiore di 2147483647, Dapper.Contrib lancia l'eccezione "Il valore è troppo grande o troppo piccolo per Int32".
Quando si utilizza Dapper.Contrib per inserire dati, l'errore "Il valore è troppo grande o troppo piccolo per Int32", e il database è stato inserito con successo! sospettavo fosse un problema del framework ORM, poi ho cercato su GitHub e ho scoperto che era un problema noto,Il team di Dapper non l'ha risolto perché teme che possa avere un impatto eccessivo, e altri autori hanno fornito PR a Dapper, ma è stato anche chiuso, come mostrato nella figura sottostante:
Il login del link ipertestuale è visibile.
Il motivo dell'eccezione è che, dopo aver ottenuto l'auto-valore aggiunto, prendendo come esempio l'adattatore SQL Server, il cast viene cast in un errore di tipo int, e il valore massimo di int è (int. MaxValue): 2147483647, come mostrato nella figura sottostante:
Per riprodurre il metodo, crea una nuova tabella, aggiungi la chiave primaria che parte da 2147483648, e lo script SQL è il seguente:
Facendo riferimento al pacchetto Dapper.Contrib, esegui l'operazione di inserimento con il seguente codice:
L'errore è il seguente:
soluzione
Sostituisci Dapper.Contrib con il pacchetto Dapper.Contrib.Unofficial con il seguente comando:
Il test non fornisce più errori, come mostrato nella figura seguente:
Consiglio: Dapper.Contrib.Unofficial non è completamente testato, per favore testalo tu stesso prima di usarlo!
(Fine)
|