0

我们正在使用 NHIbernate、.net 和 sql server2005。最神秘的是,使用相同的数据库,相同的单元测试,我的朋友没有任何类型的消息,他们所有的测试都通过了,而我的我有错误消息:

ERROR [TestRunnerThread] ADOExceptionReporter [(null)]- The DELETE statement conflicted with the REFERENCE constraint "FK_Project_Client". The conflict occurred in database "TestDev", table "dbo.Project", column 'ClientID'. The statement has been terminated. 13:10:02,656 ERROR [TestRunnerThread] SessionImpl [(null)]- could not synchronize database state with session NHibernate.ADOException: could not delete: [Client#875][SQL: DELETE FROM Client WHERE ID = ?] ---> System.Data.SqlClient.SqlException: The DELETE statement conflicted with the REFERENCE constraint "FK_Project_Client". The conflict occurred in database "TestDev", table "dbo.Project", column 'ClientID'.

在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,布尔 breakConnection)

在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常,布尔 breakConnection)

在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()

在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj)

在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,字符串 resetOptionsString)

在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔返回流,布尔异步)

在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔 returnStream,String 方法,DbAsyncResult 结果)

在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult 结果,字符串方法名,布尔型 sendToPipe)

在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery()

在 NHibernate.Impl.BatcherImpl.ExecuteNonQuery(IDbCommand cmd)

在 NHibernate.Impl.NonBatchingBatcher.AddToBatch(IExpectation 期望)

在 NHibernate.Persister.Entity.AbstractEntityPersister.Delete(对象 id,对象版本,Int32 j,对象 obj,SqlCommandInfo sql,ISessionImplementor 会话,对象 [] 加载状态)

--- 内部异常堆栈跟踪结束 ---

在 NHibernate.Persister.Entity.AbstractEntityPersister.Delete(对象 id,对象版本,Int32 j,对象 obj,SqlCommandInfo sql,ISessionImplementor 会话,对象 [] 加载状态)

在 NHibernate.Persister.Entity.AbstractEntityPersister.Delete(对象 id,对象版本,对象 obj,ISessionImplementor 会话)

在 NHibernate.Impl.ScheduledDeletion.Execute()

在 NHibernate.Impl.SessionImpl.Execute(IExecutable 可执行文件)

在 NHibernate.Impl.SessionImpl.ExecuteAll(IList 列表)

在 NHibernate.Impl.SessionImpl.Execute()

该语句已终止。像上面一样,我有各种其他测试失败并显示错误消息

无法将数据库状态与会话同步

知道为什么我会收到错误消息,有人知道吗?

4

1 回答 1

2

所有测试都是互斥的吗?那就是它们都independently相互运行可能是一个测试干扰了另一个测试。

如果你自己运行测试,你会遇到同样的问题吗?

另外,您是在自己的开发数据库上运行测试还是共享开发数据库?如果是你自己的,那data和你的同事一模一样吗?

我知道这不是一个严格的答案,并且有很多问题,但希望其中一个问题能够引导您找到解决方案。

于 2011-05-20T10:24:57.420 回答