为什么 SQL 整数数字列在 C# 数据集中映射为 System.Decimal
本文关键字:集中 数据集 映射 Decimal System 数据 整数 SQL 数字 为什么 | 更新日期: 2023-09-27 18:37:22
为什么在 C# 中生成 SQL 整型数字列(例如 NUMERIC(3,0)
) (在数据集中)作为列类型或在数据适配器中作为参数类型)作为类型 Decimal
?
NUMERIC(3,0)
可以存储 -999 到 999 范围内的整数值。我认为它应该在 C# 中生成为 int
类型或其他整数类型。
我认为,这种行为是.NET或Visual Studio的严重错误。如果我不想重写生成的代码并且不想在 int 和 decimal 之间使用它的任何地方进行转换,我应该如何解决它?谢谢。
您的问题是为什么 MSSQL NUMERIC
转换为 C# Decimal
,答案是因为即使您指定它没有像 NUMERIC[3,0]
这样的小数位,NUMERIC
它仍然是一个浮点值。
如果NUMERIC
转换为 C# 转换为不同的类型,具体取决于您是否指示它有任何小数点,则没有意义。
我假设您正在使用NUMERIC[3,0]
来节省数据库中的空间,但根据文档,它使用 5 个字节。另一方面,SQL INT
仅使用 4。 而且,更好的是,SMALLINT
只使用 2 个字节。
遗憾的是,您要么必须将数据库转换为使用 SMALLINTs
而不是NUMERIC
,要么必须在 C# 中进行转换。
如果您只有一个实体从数据库中检索数据,然后您可以将转换保持在最低限度并本地化到单个位置,那就太好了。