Požadavky: Při použití Dapper.Contrib pro spuštění metody Insert je návratová hodnota jednoho vloženého data pro pole samozvyšujícího se primárního klíče hodnota po vložení, a když je návratová hodnota větší než 2147483647, Dapper.Contrib vyhodí výjimku "Hodnota je příliš velká nebo příliš malá pro Int32".
Při použití Dapper.Contrib pro vložení dat se objeví chyba "Hodnota je příliš velká nebo příliš malá pro Int32" a databáze byla úspěšně vložena! podezříval jsem, že jde o problém s frameworkem ORM, pak jsem hledal na GitHubu a zjistil, že jde o známý problém,Tým Dapperu to neopravil, protože se obává, že by to mohlo mít příliš velký dopad, a jiní autoři poskytli Dapperu PR, ale také byl uzavřen, jak je znázorněno na obrázku níže:
Přihlášení k hypertextovému odkazu je viditelné.
Důvodem výjimky je, že po získání self-value-added, například SQL Server adaptéru, je castování převedeno na chybu typu int a maximální hodnota int je (int. MaxValue): 2147483647, jak je znázorněno na obrázku níže:
Pro reprodukci metody vytvořte novou tabulku, přidejte primární klíč začínající od 2147483648 a SQL skript je následující:
Odkazem na balíček Dapper.Contrib proveďte operaci vložení pomocí následujícího kódu:
Chyba je následující:
řešení
Nahraďte Dapper.Contrib balíčkem Dapper.Contrib.Unofficial následujícím příkazem:
Test již chybu nenabízí, jak je znázorněno na následujícím obrázku:
Tip: Dapper.Contrib.Unofficial není plně otestovaný, prosím, otestujte si ho sami, než ho použijete!
(Konec)
|