昨日、TableAdaptersを使用しているときに奇妙な動作に気づきました。何らかの理由で、小数<0.1を渡すと、整数になります。たとえば、1.0123に合格すると、SQLプロファイラーに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として正しく認識されます)