“错误”;无法执行批处理命令。[SQL:SQL不可用]”;在NHibernate中删除失败后
删除与另一条记录相关的实体后,由于约束,出现以下错误: DELETE语句与约束冲突&c 我使用以下代码管理此错误:“错误”;无法执行批处理命令。[SQL:SQL不可用]”;在NHibernate中删除失败后,sql,nhibernate,Sql,Nhibernate,删除与另一条记录相关的实体后,由于约束,出现以下错误: DELETE语句与约束冲突&c 我使用以下代码管理此错误: Using transazione As ITransaction = sessione.BeginTransaction Try sessione.Delete(entity) transazione.Commit() Return True Catch ex As E
Using transazione As ITransaction = sessione.BeginTransaction
Try
sessione.Delete(entity)
transazione.Commit()
Return True
Catch ex As Exception
transazione.Rollback()
Return False
End Try
End Using
如果我再次尝试执行UPDATE语句,同样的错误会再次发生,即使我不再执行DELETE语句
有人能帮我理解我哪里出了问题吗?关于被引用的实体,你有没有关于删除主实体的级联规则 通常,我使用的是Hibernate for Spring Framework,但指导原则是相同的。请阅读,特别是第二段: 如果ISession引发异常,您应该立即回滚事务,调用ISession.Close()并放弃ISession实例。某些ISession方法不会使会话保持一致状态 调用Delete()时,注册要删除的对象。当异常发生时,并不意味着会话突然忘记了删除对象的请求。此外,对Rollback()的调用主要向数据库发出Rollback语句——它不会将加载的对象恢复到事务启动前的状态
通过在回滚事务后保留会话,您可能会在以后的事务中提交在第一个事务中所做的某些更改。不,我不知道……映射和数据库中都没有(SQL Server 2008 R2)。数据库中的两个表之间只有一个关系