1

NUMERIC(3,0)为什么在 C# 中(在 DataSet 中作为列类型或在 DataAdapter 中作为参数类型)生成SQL 整数数字列(例如)作为类型Decimal

NUMERIC(3,0)可以存储 -999 到 999 范围内的整数值。我认为它应该在 C# 中生成为类型int或另一个整数。

我认为,这种行为是 .NET 或 Visual Studio 的严重错误。如果我不想重写生成的代码并且我不想在我使用它的任何地方在 int 和 decimal 之间进行转换,我应该如何解决它?谢谢你。

4

1 回答 1

5

您的问题是为什么将 MSSQLNUMERIC转换为 C# Decimal,答案是因为NUMERIC它仍然是一个浮点值,即使您指定它没有像NUMERIC[3,0].

如果NUMERIC根据您是否指出它有任何小数点,将 where 转换为不同类型的 C# 是没有意义的。

我假设您正在使用NUMERIC[3,0]以节省数据库中的空间,但根据文档,它使用 5 bytesINT另一方面,SQL仅使用 4。而且,更好的是, aSMALLINT 只使用 2 个字节

不幸的是,您要么必须将数据库转换为使用SMALLINTsNUMERIC要么必须在 C# 中进行转换。

如果您只有一个实体从数据库中检索数据,然后您可以将转换保持在最低限度并本地化到一个位置,那就太好了。

于 2012-06-16T20:42:13.973 回答