为什么在C#中生成SQL整数数列(例如NUMERIC(3,0)
)(在DataSet中)
作为列类型或在DataAdapter中作为参数类型)作为类型Decimal
?
NUMERIC(3,0)
可以存储-999到999范围内的整数值。我认为它应该在C#中生成为int
类型或另一个整数。
我认为,这种行为是.NET或Visual Studio的严重错误。我应该如何解决它,如果我不想重写生成的代码,我不想转换到任何地方我在int和decimal之间使用它?谢谢。
答案 0 :(得分:5)
您的问题是为什么MSSQL NUMERIC
转换为C#Decimal
,答案是因为NUMERIC
仍然是浮点值,即使您指定它没有像{一样的小数位数{1}}。
如果将NUMERIC[3,0]
转换为不同类型的C#,取决于您是否指出它有任何小数点,那就没有意义。
我假设您使用NUMERIC
来节省数据库中的空间,但根据文档,它uses 5 bytes。另一方面,SQL NUMERIC[3,0]
为only uses 4。而且,更好的是INT
uses only 2 bytes。
不幸的是,您要么必须将数据库转换为使用SMALLINT
而不是SMALLINTs
,否则您将不得不转换为C#。
如果您只有一个实体从您的数据库中检索数据,然后您可以将转换保持在最低限度并且本地化为单个位置,那就太好了。