昨天我在使用 TableAdapters 时注意到一个奇怪的行为,由于某种原因,当传递一个小于 0.1 的小数时,它会变成一个整数。例如,如果我通过 1.0123,我可以在 SQL Profiler 中看到 1.0123,但如果我通过 0.0123,我将得到 123。是否存在已知问题?您可以执行以下步骤来重现该问题:
新建一个数据库TestDatabase,并创建如下存储过程
create proc DecimalParametersSelect ( @Foo decimal(10,5) ) as select @Foo
创建一个新项目并添加一个新的 DataSet 文件 SampleDataset。添加一个新的 TableAdapter 并将 DecimalParametersSelect 添加为 Select 过程(它应该是您数据库中唯一的一个)。
运行您的项目并尝试选择一些数据,例如
using (SampleDatasetTableAdapters.DecimalParametersSelectTableAdapter dta = new SampleDatasetTableAdapters.DecimalParametersSelectTableAdapter()) { var table = dta.GetData(0.01588M); }
在分析器中,您应该看到传入的值是 1588(有趣的是,返回的值在 C# 中被正确识别为 0.01588)