我目前正在修復舊的Windows應用程序並遇到NHibernate錯誤。我已經閱讀並在網上嘗試了一些東西,但最終出現錯誤。NHibernate SaveOrUpdate錯誤
這裏是我的ISession的代碼:
Public ReadOnly Property session() As ISession
Get
If IsNothing(m_session) Then
m_session = Factory.InitConfiguration.OpenSession()
End If
Return m_session
End Get
End Property
這裏是我的保存按鈕代碼:
Try
session.BeginTransaction()
SetParent(x_object)
'session.clear()
session.Flush()
session.SaveOrUpdate(x_object)
session.Transaction.Commit()
compObj.IsNew = False
Return True
Catch ex As Exception
AppServices.ErrorMessage = ex.Message
session.Transaction.Rollback()
Return False
Finally
'TBA
End Try
所以,問題就在這裏,我有這個日期列作爲DateTime和AttachmentList 。
當前的代碼在年份中的用戶鍵值小於1753之前沒有任何問題。但是,代碼正確捕獲錯誤並顯示消息,並且當用戶繼續修復年份錯誤時,它會仍然捕獲錯誤(在手錶中我已經獲得新值),直到用戶關閉應用程序並重新打開它。
但是,如果我取消註釋session.clear(),它會做得很好,用戶可以修復他們的拼寫錯誤並繼續保存記錄,但是當用戶執行其他操作時可以說附件,它會得到另一個錯誤。附件動作如下:
- 添加附件
- 點擊保存按鈕
- 添加新的附件
- 點擊保存按鈕
- 新的錯誤。
所以請指點一下什麼需要做的工作。我試過合併,我試過更新,保存,驅逐,但最終出錯。我認爲我的問題是我如何安排會議是問題的主要來源。
「m_session」和「x_object」的範圍是什麼?你是否將實體映射到DTO之類的其他實體? –
@A_J是的,我將實體映射到許多孩子,並將其設置爲1父母。然而,我的問題是通過弗雷德裏克的解釋解決的。你可以參考爲什麼。 –