c# - エンタープライズライブラリdbcommand AddInParameterメソッド

c# .net ado.net enterprise-library

エンタープライズライブラリを長い間使用しています。異なる言語をサポートするために、データベースの列タイプvarcharをnvarcharに変更しています。コマンドオブジェクトを使用するような従来の方法でデータベースに接続するレガシーコードがあります。そのコードでは、sqlparametersを作成するときに、パラメーターのデータ型がintかvarcharかに関係なく指定されています。そこでvarcharからnvarcharに変更するのは簡単です。

しかし、文字列のような.netデータ型を指定するエンタープライズライブラリを使用しているときに、ストアドプロシージャを呼び出すときに、エンタープライズライブラリがその型をsqldatatypeに内部的に変換すると思います。

db.AddInParameter(cmd、 "@SortOrder"、DbType.String、SortOrder)

どのデータ型エンタープライズライブラリが内部で変換しますか? varcharまたはnvarchar?私たちが持っているレガシーコードのあらゆる場所でnvarcharを使用しても安全ですか?
答え
コメントで述べたように、.netを変換するデータ型について心配する必要はありません。これを処理して自動的に処理します。 ADO.netは、SqlServerでStringデータ型をvarcharnvarcharcharntexttextデータ型に変換できます。ストアドプロシージャのデータ型を指定すると、ADO.netにSqlServerで適切なデータ型にデータを変換するよう通知されます。


sqlparameterオブジェクトを作成するとき、または.netがそれを処理する場合にAddInParameterを呼び出すときに、なぜデータ型を指定するのですか?


編集:コメントでのあなたの質問に基づいて、あります:

db.Parameters.AddWithValue("@SortOrder", SortOrder);


入力パラメータのデータ型を指定する必要はありません。
関連記事

c# - RIAデータサービスの呼び出しをサービスレイヤーにリファクタリングするにはどうすればよいですか?

c# - MoqでHttpApplicationStateをモックするときにオブジェクトを設定できないようです

c# - ラインオブジェクトのエンドキャップの幅または高さの値を取得するにはどうすればよいですか?

c# - データベースにアクセスしてエンティティフレームワークデータをテストする

c# - LoadAsyncとMemoryStreamを使用して、データベースから画像ボックスに画像をロードしたい

c# - リピーターをカスタムクラスの配列にバインドする方法[閉まっている]

c# - CSSをasp.net Webアプリケーションに追加する方法

c# - WP7-アニメーションが早すぎて効果が残っていない

c# - richTextbox1からtextbox1?

c# - WPF:IValueConverterからスローされたUIにエラーメッセージを表示する方法