I believe it does wrap it, but this attribute works on all my other tests that have this attribute and according to what I can reference from MbUnit's documentation this should work fine. In fact if I run this test by itself it runs fine. Now I understand (I learned that lesson the first question I posed to this group) that might point to another test causing issue, but this test is really independent of any other test. It creates its own group then deletes that same group it isn't dependent on any other functionality. Also if I take this test out and run everything else it works fine. It is just something to do with this transaction but I the exception is EXTREMELY vague.
Thanks, Josh On Apr 6, 9:35 am, Will Shaver <[email protected]> wrote: > What does the [Rollback] attribute do? > Does it set up a session and a transaction? If so you're doing one > transaction inside of another... > > On Mon, Apr 6, 2009 at 7:23 AM, joshlrogers <[email protected]> wrote: > > > I am running a test: > > > [Test] > > [Rollback] > > public void CanDeleteRatingGroupByName() > > { > > > CWTRatingGroup newGroup = new CWTRatingGroup(); > > newGroup.Name = "Delete Me"; > > newGroup.UserAdded = provider.GetUserById(1); > > > int id = provider.AddCWTRatingGroup(newGroup); > > > provider.RemoveCWTRatingGroupByName(newGroup.Name); > > > Assert.IsNull(provider.GetCWTRatingGroupById(id)); > > } > > > The line > > > int id = provider.AddCWTRatingGroup(newGroup); > > > fails with the following exception: > > > NHibernate.TransactionException: Begin failed with SQL exception ---> > > System.Data.SqlClient.SqlException: Distributed transaction completed. > > Either enlist this session in a new transaction or the NULL > > transaction. > > at System.Data.SqlClient.SqlConnection.OnError(SqlException > > exception, Boolean breakConnection) > > at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException > > exception, Boolean breakConnection) > > at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning > > (TdsParserStateObject stateObj) > > at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, > > SqlCommand cmdHandler, SqlDataReader dataStream, > > BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject > > stateObj) > > at > > System.Data.SqlClient.TdsParser.TdsExecuteTransactionManagerRequest > > (Byte[] buffer, TransactionManagerRequestType request, String > > transactionName, TransactionManagerIsolationLevel isoLevel, Int32 > > timeout, SqlInternalTransaction transaction, TdsParserStateObject > > stateObj, Boolean isDelegateControlRequest) > > at > > System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransactionYukon > > (TransactionRequest transactionRequest, String transactionName, > > IsolationLevel iso, SqlInternalTransaction internalTransaction, > > Boolean isDelegateControlRequest) > > at System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransaction > > (TransactionRequest transactionRequest, String name, IsolationLevel > > iso, SqlInternalTransaction internalTransaction, Boolean > > isDelegateControlRequest) > > at System.Data.SqlClient.SqlInternalConnection.BeginSqlTransaction > > (IsolationLevel iso, String transactionName) > > at System.Data.SqlClient.SqlInternalConnection.BeginTransaction > > (IsolationLevel iso) > > at System.Data.SqlClient.SqlConnection.BeginDbTransaction > > (IsolationLevel isolationLevel) > > at > > System.Data.Common.DbConnection.System.Data.IDbConnection.BeginTransaction > > () > > at NHibernate.Transaction.AdoTransaction.Begin(IsolationLevel > > isolationLevel) > > --- End of inner exception stack trace --- > > at NHibernate.Transaction.AdoTransaction.Begin(IsolationLevel > > isolationLevel) > > at NHibernate.Transaction.AdoTransaction.Begin() > > at TEAMSData.DataLayer.NHibernateDataProvider.AddCWTRatingGroup > > (CWTRatingGroup ratingGroup) in C:\Source\TEAMS\TEAMS\TEAMSData > > \DataLayer\NHibernateDataProvider.cs:line 62 > > at > > TEAMSDataUnitTests.CWTRatingGroupDeleteTests.CanDeleteRatingGroupByName > > () in C:\Source\TEAMS\TEAMS\TEAMSUnitTests\CWTRatingGroupTests.cs:line > > 164 > > > What confuses me is that the function that this calls is called in > > other tests successfully. Here is that code just for clarity sake: > > > public int AddCWTRatingGroup(CWTRatingGroup ratingGroup) > > { > > > try > > { > > ratingGroup.DateAdded = DateTime.Now; > > > session.Transaction.Begin(); > > > int id = (int)session.Save(ratingGroup); > > session.Flush(); > > > session.Transaction.Commit(); > > > return id; > > } > > catch (Exception) > > { > > if( session.Transaction.IsActive ) > > session.Transaction.Rollback(); > > > ResetSession(); > > throw; > > } > > > } > > > Session.Transaction.Begin() is what actually throws the exception in > > this case. However I am doing almost the exact same thing in another > > test and it runs just fine. > > > Any ideas? > > > Thanks again, > > Josh --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nhusers?hl=en -~----------~----~----~----~------~----~------~--~---
