这应该回答你的问题:
您将使用BigInt,您只需要小心如何将签名类型转换回C#中的无符号类型
// This has not been tested
unchecked
{
myUlong = myDataReader.GetInt64(...);
}
Run Code Online (Sandbox Code Playgroud)
...
另一种可能性是使用长度为8的VarBinary,然后在C#中将字节转换为ulong
我知道它不一样,但是会这样做:
select convert(decimal(38, 0), 12345678901234567890123456789012345678)
Run Code Online (Sandbox Code Playgroud)
无符号长度的最大值似乎是18,446,744,073,709,551,615,这远小于此小数可以存储的值.可能存在转换问题,但我确信应用程序中的几个包装器函数会很快排序.