我正在尝试使用SCOPE_IDENTITY通过DynamicParameter的ReturnValue选项将一个长的主键返回给C#。
以下是来自Dapper网站的示例代码:
var p = new DynamicParameters();
p.Add("@a", 11);
p.Add("@b", dbType: DbType.Int32, direction: ParameterDirection.Output);
p.Add("@c", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);
cnn.Execute("spMagicProc", p, commandType: commandType.StoredProcedure);
int b = p.Get<int>("@b");
int c = p.Get<int>("@c");
我希望使用bigint作为我的主键字段,因此不想返回int,我更喜欢采用以下方法
var p = new DynamicParameters();
p.Add("@a", 11);
p.Add("@b", dbType: DbType.Int32, direction: ParameterDirection.Output);
p.Add("@c", dbType: DbType.Int64, direction: ParameterDirection.ReturnValue);
cnn.Execute("spMagicProc", p, commandType: commandType.StoredProcedure);
int b = p.Get<int>("@b");
int c = p.Get<long>("@c");
在我的存储过程中,我使用了“RETURN SCOPE_IDENTITY()”。
然而,这样做似乎会导致“指定的转换无效”的异常。
BigInteger
吗?还是指Int64,也就是long
?SQL Server的bigint映射到c#中的long
。 - Marc Gravell