提交

时间:2017-02-06 22:23:39

标签: vb.net nhibernate

我正在使用(老派)NHibernate(不是Fluent)来更新数据库中的一些记录。我正在更新实体,然后使用transaction.commit()。代码执行时,不会抛出任何异常。但是当我查看数据库时,记录没有得到更新。经过进一步调查,当我调试代码时,我会查看transaction对象,执行提交后committed属性为false 。但没有抛出异常。我反复试过一遍又一遍地更新同一组记录。

经过进一步调查,我注意到{I} committed属性每隔一段时间设置为true,正如我所料。检查数据库时,记录已正确保存。但它是随机的。有时它会保存并且committed属性为true。有时它不会保存,committed属性为false。我找不到任何理由,而且我一遍又一遍地更新相同的记录。

有谁知道会发生什么?这是我的代码的简短片段:

        Using session = NHibernateSession.OpenSession
            'GET PATIENT RESPONSE RECORDS FROM THE DATABASE
            Dim critPSR As NHibernate.ICriteria = session.CreateCriteria(GetType(T_PATIENTSURVEYRESPONSE))
            Dim psrList As IList(Of T_PATIENTSURVEYRESPONSE) = critPSR.List(Of T_PATIENTSURVEYRESPONSE)()
            'UPDATE AND SAVE ALL THE RESPONSES
            Using transaction = session.BeginTransaction
                For Each psr In psrList
                    If (ValuesFromPage.Any(Function(x) x.PatientSurveyResponseID = psr.PatientSurveyResponseID)) Then
                        Dim val = ValuesFromPage.First(Function(x) x.PatientSurveyResponseID = psr.PatientSurveyResponseID)
                        psr.Text = val.Text
                        psr.AnsweredInd = True
                        psr.AuditCompleteInd = False
                        session.Update(psr)
                    End If
                Next
                transaction.Commit()
            End Using
        End Using

有一点需要注意 - 我们的数据库已经增长到大约24G。我不知道是否可能是某些磁盘写入错误。但我希望能抛出某种异常。

0 个答案:

没有答案