「SELECT @@ IDENTITY」が小数を返すのはなぜですか?
Dapperを使用して、ASP.NET MVC 3(.NET 4.0)アプリケーションからSQL Server 2008 R2 Expressインスタンスに対して次のクエリを実行しています。 INSERT INTO Customers ( Type, Name, Address, ContactName, ContactNumber, ContactEmail, Supplier) VALUES ( @Type, @Name, @Address, @ContactName, @ContactNumber, @ContactEmail, @Supplier) SELECT @@IDENTITY への呼び出しconnection.Query<int>(sql, ...)は、無効なキャスト例外をスローしています。デバッグしましたが、DapperがGetValue返されたを呼び出す時点SqlDataReaderです。 の戻り値の型GetValueはObject、デバッガーショーでそれを検査し、それがボックス10進数であることを示します。 selectをに変更するとSELECT CAST(@@IDENTITY as int)、GetValueの戻り値はボックス化されたintになり、例外はスローされません。 Id列は間違いなくint型です。なぜSELECT @@IDENTITY小数を返すのですか? 追加情報: データベースは真新しいです。 Customersテーブルは、私がそれに追加した唯一のオブジェクトです。データベースには、他の(ユーザー)テーブル、ビュー、トリガー、またはストアドプロシージャはありません。 データベースには10行があり、IDは1,2,3,4,5,6,7,8,9,10です(つまり、列はintの制限を超えていません)。 私のテーブル定義は CREATE TABLE [dbo].[Customers]( [Id] [int] IDENTITY(1,1) …