Dapperを使用してOracle 12データベースにブール値を挿入する際に問題があります。Dapperを使用してOracleにBooleanを挿入できません
私が手に例外が ORA-00932: inconsistent datatypes: expected NUMBER got BOOLEAN
のCommandTextが
INSERT INTO crossqueryb.counterparty (Id,Name,IsBroker,DefaultPortfolioId) VALUES (:Id,:Name,:IsBroker,:DefaultPortfolioId)
IsBroker
ですがNUMBER(1)
として定義されます。
OracleParameterを検査すると、DbTypeプロパティとOracleDbTypeプロパティがBoolean
に設定されます。値はfalse
、値の型はobject {bool}
です。
パラメータは、実際のドメインタイプまたは匿名タイプではなく、IDictionary<string,object>
としてQueryメソッドに渡されます。
これにカスタムタイプハンドラを記述する必要がありますか、それとも明白な何かが欠けていますか?
ええ、私はDapperがそれをやり遂げることを期待しています。あなたはそれがそうではないと言っていますか、自分のTypeHandlerを書く必要がありますか? – John
@John私はDapperを使用していないので、オラクル側から何が起きているかだけを伝えることができます。しかし、[この回答](https://stackoverflow.com/q/23502237/1509264)と[このドキュメントのページ](https://stackoverflow.com/documentation/dapper/6/type-handlers/11/converting- varchar-to-ihtmlstring)は、型ハンドラが答えであることを示唆しています。 – MT0
@ジョン:この答えによると:https://stackoverflow.com/questions/42365865/pass-c-sharp-bool-as-parameter-to-oracle-using-dapper、TypeHandlerはクエリではなくパラメータにのみ適用されます。その答えから解決策を試すことができます。 –