απαιτήσεις: Όταν χρησιμοποιείτε το Dapper.Contrib για την εκτέλεση της μεθόδου εισαγωγής, η τιμή επιστροφής ενός μεμονωμένου εισαγόμενου δεδομένων για το πεδίο πρωτεύοντος κλειδιού που αυξάνεται αυτόματα είναι η τιμή μετά την εισαγωγή και όταν η τιμή επιστροφής είναι μεγαλύτερη από 2147483647, το Dapper.Contrib θα ρίξει την εξαίρεση "Η τιμή είναι πολύ μεγάλη ή πολύ μικρή για το Int32".
Όταν χρησιμοποιείτε το Dapper.Contrib για την εισαγωγή δεδομένων, εμφανίζεται το σφάλμα "Η τιμή είναι πολύ μεγάλη ή πολύ μικρή για το Int32" και η βάση δεδομένων έχει εισαχθεί με επιτυχία! υποψιάστηκε ότι ήταν πρόβλημα με το πλαίσιο ORM, στη συνέχεια έψαξε στο GitHub και διαπίστωσε ότι ήταν γνωστό πρόβλημα,Η ομάδα του Dapper δεν το έχει διορθώσει επειδή ανησυχεί ότι θα έχει πολύ αντίκτυπο και άλλοι συγγραφείς έχουν παράσχει δημόσιες σχέσεις στο Dapper, αλλά έχει επίσης κλείσει, όπως φαίνεται στο παρακάτω σχήμα:
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Ο λόγος για την εξαίρεση είναι ότι μετά τη λήψη της αυτοπροστιθέμενης τιμής, λαμβάνοντας ως παράδειγμα τον προσαρμογέα του SQL Server, το cast μεταδίδεται σε ένα σφάλμα τύπου int και η μέγιστη τιμή του int είναι (int. MaxValue): 2147483647, όπως φαίνεται στο παρακάτω σχήμα:
Για να αναπαράγετε τη μέθοδο, δημιουργήστε έναν νέο πίνακα, προσθέστε το πρωτεύον κλειδί ξεκινώντας από το 2147483648 και το σενάριο SQL έχει ως εξής:
Αναφέροντας το πακέτο Dapper.Contrib, εκτελέστε τη λειτουργία εισαγωγής με τον ακόλουθο κώδικα:
Το σφάλμα έχει ως εξής:
λύση
Αντικαταστήστε το πακέτο Dapper.Contrib με το πακέτο Dapper.Contrib.Unofficial με την ακόλουθη εντολή:
Η δοκιμή δεν δίνει πλέον σφάλμα, όπως φαίνεται στο παρακάτω σχήμα:
Συμβουλή: Το Dapper.Contrib.Unofficial δεν έχει δοκιμαστεί πλήρως, δοκιμάστε το μόνοι σας πριν το χρησιμοποιήσετε!
(Τέλος)
|