[英]Exception: Specified cast is not valid.v
at IBM.Data.DB2.Core.TypeMap.FromValue(Object oValue, Int32& iByteLength, DB2Connection connection, Int32 iArrayLength, String parameterName, Boolean bMultiRowCmd)
at IBM.Data.DB2.Core.DB2Parameter.GetParamInfo(Int32 paramPos, DB2ParamInfo& paramInfo, Boolean chainBegin)
at IBM.Data.DB2.Core.DB2ParameterCollection.GetParamInfoList(Boolean chainBegin)
at IBM.Data.DB2.Core.DB2Command.ExecuteReaderObject(CommandBehavior behavior, String method, DB2CursorType reqCursorType, Boolean abortOnOptValueChg, Boolean skipDeleted, Boolean isResultSet, Int32 maxRows, Boolean skipInitialValidation)
at IBM.Data.DB2.Core.DB2Command.ExecuteReaderObject(CommandBehavior behavior, String method)
at IBM.Data.DB2.Core.DB2Command.ExecuteReader(CommandBehavior behavior)
at IBM.Data.DB2.Core.DB2Command.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
--- End of stack trace from previous location where exception was thrown ---
在代碼行以下的位置拋出了異常。 var dr = await cmd.ExecuteReaderAsync()
我們對 do.net core 2.1 沒有問題,但是當我們更新到 do.net core 3.1 時,我們遇到了這個問題。
更新do.netcore 2.1 項目使用 ibm.data.db2.core 1.3 do.netcore 3.1 項目使用 ibm.data.db2.core 3.1(雖然單元測試通過)
我現在開始工作了。 在 dotnet core 2.1 中,對象值正確反序列化。 在我的情況下,它是字符串,在 dotnet core 3.1 中,它被反序列化為 JsonElement,這導致了問題,而 db2 沒有將 jsonelement 識別為任何類型。
我通過添加services.AddControllers().AddNewtonsoftJson();
將我的服務切換為使用 Newtonsoftjson services.AddControllers().AddNewtonsoftJson();
現在它正在適當地使它脫鹽。
這里是一個開放的問題,在這里為布爾這幾乎是一樣的我的情況,但我的目標是字符串類型。 他們還建議在那里為 Object 編寫一個自定義轉換器。
如果有人偶然發現這個問題:
正如接受的答案所指出的那樣,雖然應該正確配置 desiralization,但就我而言,我試圖將CHARACTER(1)
SQL 類型轉換為與Int32
相同的char
數據類型。
解決方案是將char
數據類型更改為string
。 效率低下,但它完成了工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.