【发布时间】:2009-10-03 02:58:13
【问题描述】:
我遇到了一个奇怪的问题,设置如下:
ASP.NET 3.5 应用程序/MSSQLSERVER 2008 后端。
我从我的代码中调用了 ExecuteScalar,它返回了一个对象,然后我尝试将该对象强制转换为 int(我实际上有一个通用方法
T ConvertDBValue<T>(object o) {...}
,但这并不重要)。
ExecuteScalar 正在命中以下存储过程:
...
insert into ...
select scope_identity()
我的主键是一个身份字段,并返回 85。接下来我得到的是 InvalidCastException 试图将 85 转换为 int。
解决方案是显式创建一个 INT 变量,并在从 sproc 返回之前将 SCOPE_IDENTITY() 分配给它,如下所示:
...
DECLARE @x int
insert into ...
select @x = scope_identity()
select @x
谁能告诉我我的第一种方法有什么问题,为什么不将 85 转换为 int?
【问题讨论】:
标签: c# asp.net sql-server casting