Anforderungen: Wenn Dapper.Contrib zur Ausführung der Insert-Methode verwendet wird, ist der Rückgabewert einer einzelnen eingefügten Daten für das selbststeigernde Primärschlüsselfeld der Wert nach der Einfügung, und wenn der Rückgabewert größer als 2147483647 ist, wirft Dapper.Contrib die Ausnahme "Der Wert ist zu groß oder zu klein für Int32".
Wenn ich Dapper.Contrib zum Einfügen der Daten benutze, erscheint die Fehlermeldung "Der Wert ist zu groß oder zu klein für Int32", und die Datenbank wurde erfolgreich eingefügt! habe vermutet, dass es ein Problem mit dem ORM-Framework ist, dann auf GitHub gesucht und festgestellt, dass es ein bekanntes Problem ist,Das Dapper-Team hat es nicht behoben, weil es befürchtet, es könnte zu wirkungsvoll sein, und andere Autoren haben Dapper mit PR versorgt, aber es wurde ebenfalls geschlossen, wie in der untenstehenden Abbildung dargestellt:
Der Hyperlink-Login ist sichtbar.
Der Grund für die Ausnahme ist, dass nach Erlangung des selbsthinzugefügten Wertes, als Beispiel der SQL-Server-Adapter, der Cast auf einen Int-Typfehler umgewandelt wird, und der maximale Wert von int (int. MaxValue): 2147483647, wie in der untenstehenden Abbildung gezeigt:
Um die Methode zu reproduzieren, erstelle eine neue Tabelle, füge den Primärschlüssel ab 2147483648 hinzu, und das SQL-Skript sieht wie folgt aus:
Unter Verwendung des Dapper.Contrib-Pakets führt die Einfügungsoperation mit folgendem Code aus:
Der Fehler lautet wie folgt:
Lösung
Ersetzen Sie Dapper.Contrib durch das Dapper.Contrib.Unofficial Paket durch den folgenden Befehl:
Der Test liefert keinen Fehler mehr, wie in der folgenden Abbildung dargestellt:
Tipp: Dapper.Contrib.Unofficial ist nicht vollständig getestet, bitte teste es selbst, bevor du es benutzt!
(Ende)
|