Odpowiedzi:
To odpowiada długiej (lub Int64 ) 64-bitowej liczbie całkowitej.
Chociaż jeśli liczba z bazy danych jest wystarczająco mała i przypadkowo używasz Int32 itp., Nic ci nie będzie. Ale Int64 na pewno to wytrzyma.
A błąd pojawia się, gdy używasz czegoś mniejszego i potrzebny jest pełny rozmiar? Przepełnienie stosu! Tak!
long
nie jest pisane dużymi literami.
Właśnie miałem skrypt, który zwrócił klucz podstawowy wkładki i użyłem
SELECT @@identity
na moim kluczu głównym bigint, a błąd rzutowania pojawia się przy użyciu długiego - dlatego zacząłem to wyszukiwanie. Prawidłowa odpowiedź przynajmniej w moim przypadku jest taka, że typ zwracany przez ten wybór jest NUMERYCZNY, co odpowiada typowi dziesiętnemu. Użycie długiego spowoduje wyjątek rzutowania.
Jest to jeden z powodów, aby sprawdzić swoje odpowiedzi w więcej niż jednym wyszukiwaniu Google (a nawet w Stack Overflow!).
Aby zacytować administratora bazy danych, który mi pomógł:
... BigInt to nie to samo co INT64, bez względu na to, jak bardzo wyglądają podobnie. Częściowo dlatego, że SQL często konwertuje Int / BigInt na Liczbowe w ramach normalnego przetwarzania. Więc jeśli chodzi o OLE lub .NET, wymagana konwersja jest NUMERYCZNA na INT.
Często nie zauważamy, ponieważ drukowana wartość wygląda tak samo. ”
Użyj długiego typu danych.
Możesz użyć long
typu lubInt64
Myślę, że odpowiednikiem jest Int64
int w mapach sql bezpośrednio do int32 znany również jako prymitywny typ, tj. int w C #, podczas gdy
bigint w Sql Server mapuje bezpośrednio na int64 znany również jako prymitywny typ, tj. długi w C #
Wyraźna konwersja, jeśli zdefiniowano tutaj biginteger na liczbę całkowitą
W większości przypadków jest długi (int64) w c #