第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何調(diào)試“此帶有計數(shù) X 的 SqlParameterCollection 的索引 X 無效”

如何調(diào)試“此帶有計數(shù) X 的 SqlParameterCollection 的索引 X 無效”

C#
繁華開滿天機 2023-04-29 15:34:32
我正在開發(fā)一個用 C# 編寫并使用 Fluent NHibernate 的項目。我收到臭名昭著的異常“此 SqlParameterCollection 的索引 X 與計數(shù) X”。我已經(jīng)嘗試了來自不同 SO解決方案的幾個建議,但我就是找不到映射問題。讀取數(shù)據(jù)時不會發(fā)生錯誤,只會在更新時發(fā)生。正在更新的表非常簡單,因此該表的地圖也很簡單。當(dāng)更新發(fā)生時,NHibernate 構(gòu)造一個簡單的單表更新查詢,因此當(dāng)錯誤發(fā)生時實際上并沒有發(fā)生太多事情。我的更新代碼包含在交易中using (var tx = Session.BeginTransaction()){    try    {         result = PerformUpdate(obj, modifiedBy);         if (result.Succeeded)         {             tx.Commit();             Session.Flush();         }         else              RollbackTransaction(tx);         return result;      }      catch (Exception ex)      {          tx.Rollback();          throw;      }   }}在 tx.Commit() 上拋出異常。我相當(dāng)有信心這是架構(gòu)中某處的映射問題,但我找不到它。 如何檢查 SqlParameters 列表以便調(diào)試它?必須有一種方法來檢查 SqlParameters 列表,以便我可以看到不屬于的內(nèi)容。
查看完整描述

1 回答

?
鴻蒙傳說

TA貢獻1865條經(jīng)驗 獲得超7個贊

作為一個曾不幸與凌亂的遺留 Nhibernate 項目一起工作的人,我提出以下建議,讓你的生活更輕松,并在充滿敵意的領(lǐng)土上生存下來:

1-“如果”您的數(shù)據(jù)庫是 SQL Server:打開SQL Server 探查器并應(yīng)用所需的過濾器(數(shù)據(jù)庫名稱和命令文本),以便您看到哪些 sql 命令被準(zhǔn)確傳遞到服務(wù)器。對我來說,這將是起點。

2- 如果 SQL Server 不是你的后端引擎,你在調(diào)試時最好的朋友是NHibernate 分析器。通過顯示傳遞給服務(wù)器的每個參數(shù)的值以及最終查詢,這正是您要查找的內(nèi)容。它還顯示打開的會話以及它們是否關(guān)閉。你可以下載試用版看看。

3- 對于未來的代碼手術(shù),始終將您的項目配置為按需打開跟蹤:使用Nhibernate 跟蹤 NLog以記錄正在傳遞給 sql server 的 sql 語句并將它們保存在單獨的日志中。

上面的工具和建議是我會嘗試的,如果我被困在你的情況下。

作為最后的提示:如果您使用上述方法未能找到問題,請自行解決問題并使用您自己的 SQL 本機語句運行更新。有時弄清楚為什么 NHibernate 沒有生成所需的 SQL 語句比手動創(chuàng)建和執(zhí)行更新語句花費更多的時間。這是你的最后一槍。聽起來可能不干凈,但大多數(shù) NHibernate 項目無論如何都不干凈。


查看完整回答
反對 回復(fù) 2023-04-29
  • 1 回答
  • 0 關(guān)注
  • 124 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號