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