この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 3345|答える: 1

[出典] Dapper.Contribのエラー「Value is too larger or too small for Int32」を解決しました

[リンクをコピー]
掲載地 2023/08/06 14:04:48 | | | |
要件:Dapper.Contribを使ってInsertメソッドを実行する場合、自己増加するプライマリキーフィールドの単一の挿入データの返却値が挿入後の値となり、返却値が2147483647を超えると、Dapper.Contribは「Int32に対して値が大きすぎるまたは小さすぎる」という例外を投げます。

Dapper.Contribを使ってデータを挿入すると、「The value is too larger or too small for Int32」というエラーが出て、データベースは正常に挿入されました! ORMフレームワークの問題ではないかと疑い、GitHubで調べたら既知の問題であることが分かりました。Dapperチームは影響が大きすぎることを懸念して修正していませんが、他の著者がDapperにPRを提供しましたが、それでも閉鎖されています、下図に示されているように:

ハイパーリンクのログインが見えます。



例外の理由は、自己値加算を取得した後、SQL Serverアダプターを例にすると、キャストがint型エラーにキャストされ、intの最大値は(int)になるためです。 MaxValue): 2147483647 は以下の図に示されています:



メソッドを再現するには、新しいテーブルを作成し、2147483648から主キーを追加すると、SQLスクリプトは以下の通りです。

Dapper.Contribパッケージを参照して、以下のコードで挿入操作を実行します:

誤差は以下の通りです:



解決

Dapper.ContribをDapper.Contrib.Unformorパッケージに置き換え、以下のコマンドを使います:

この検定はもはや誤差を出さなくなり、以下の図に示されています:



ヒント:Dapper.Contrib.Unofaryは完全にテストされていないので、使用前に必ず自分でテストしてください!

(終わり)





先の:Qv2rayはWindows上でTrojan-Goサービスを接続します
次に:SQL Serverはvarcharがbigintエラーに変換するデータを見つけます
 地主| 掲載地 2023/08/06 14:14:21 |
修正されたGitHubアドレス:https://github.com/itsvse/Dapper.Contrib
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com