簡體   English   中英

異常:指定的轉換無效.v

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM