1

SQL 整数数値列 (たとえばNUMERIC(3,0)) が C# で (列型として DataSet で、またはパラメーター型として DataAdapter で) type として生成されるのはなぜDecimalですか?

NUMERIC(3,0)int-999 か​​ら 999 の範囲の整数値を格納できます。型または別の整数型として生成された C# である必要があると思います。

この動作は .NET または Visual Studio の重大なバグだと思います。生成されたコードを書き換えたくない場合、および int と decimal の間で使用するすべての場所を変換したくない場合は、どのように解決すればよいですか? ありがとうございました。

4

1 に答える 1

5

あなたの質問は、なぜ MSSQLNUMERICが C# に変換されるDecimalNUMERICかということですNUMERIC[3,0].

NUMERIC小数点があるかどうかを示したかどうかに応じて、C#に変換された場所が異なる型に変換されても意味がありません。

データベースのスペースを節約するために使用していると思いますがNUMERIC[3,0]、ドキュメントによると、5 バイトを使用しています。INT一方、SQLは 4 のみを使用します。さらに良いことに、 aSMALLINT は 2 バイトしか使用しません

残念ながら、データベースを変換してSMALLINTs代わりに使用するNUMERICか、C# で変換する必要があります。

データベースからデータを取得するエンティティが 1 つだけで、変換を最小限に抑えて 1 つの場所にローカライズできると便利です。

于 2012-06-16T20:42:13.973 に答える