3

null値(またはDbNull値など)をDbParameterオブジェクトに渡すと、SQL更新ステートメントに問題が発生します。DbNull値をValueプロパティに渡しても、DbParameterオブジェクトのDbTypeはまだSTRINGです。

バイナリフィールド(varbinary(max))に書き込もうとすると、varcharvarbinaryの間の変換ができないという例外が発生しました。その場合、自分でDbTypeを設定する必要があります。私の質問は、.NetタイプからDbTypeを取得するにはどうすればよいかということです。私はこのジェネリックになりたいので、他のデータベースで自分のメソッドを使用できます。MSDNのドキュメントで役立つものは見つかりませんでした。誰かが私にこれを解決する方法のいくつかのヒントを得ることができれば、私はこれをいただければ幸いです。または多分私は間違った道を進んでいます。今のところわかりません。

4

1 に答える 1

1

私が提案できる最善のことは、一般的なメソッドを使用してパラメーターを追加することです。

... Foo<T>(T value, ...)

そうtypeof(T)すれば、であっても確認できvalueますnull。次に、関係のタイプをオンにしてT、関係をハードコーディングする必要があります。switchオンにするType.GetTypeCode(...)と、物事がかなり簡単になります。

別のアプローチは、型付きメンバーとして値を渡すことです。たとえば、dapperでは、パラメーターをラッパーオブジェクト(通常は匿名型)として渡します。次に、MemberInfosから型を検査できます。

于 2011-08-12T22:21:45.403 に答える