Вимоги: При використанні Dapper.Contrib для виконання методу Insert, повернене значення одного вставленого даних для самозростаючого первинного ключа — це значення після вставки, а коли повернене значення більше за 2147483647, Dapper.Contrib видає виняток «Значення занадто велике або занадто мало для Int32».
При використанні Dapper.Contrib для вставки даних виникає помилка «Значення занадто велике або занадто мало для Int32», і база даних успішно вставлена! підозрював, що це проблема з фреймворком ORM, потім пошукав на GitHub і виявив, що це відома проблема,Команда Dapper не виправляла це, бо побоюється, що це буде надто впливово, а інші автори надавали PR Dapper, але її також закрили, як показано на рисунку нижче:
Вхід за гіперпосиланням видно.
Причина винятку полягає в тому, що після отримання самододаної цінності, наприклад, адаптера SQL Server, cast перетворюється на помилку типу int, і максимальне значення int дорівнює (int. MaxValue): 2147483647, як показано на рисунку нижче:
Щоб відтворити метод, створіть нову таблицю, додайте первинний ключ, починаючи з 2147483648, і SQL-скрипт виглядає так:
Посилаючись на пакет Dapper.Contrib, виконайте операцію вставки наступним кодом:
Помилка наступна:
рішення
Замініть Dapper.Contrib на пакет Dapper.Contrib.Unofficial з наступною командою:
Тест більше не дає помилки, як показано на наступному рисунку:
Порада: Dapper.Contrib.Unofficial не є повністю протестованим, будь ласка, перевірте його самостійно перед використанням!
(Кінець)
|