public void TestDBAccess_SimpleAutoDBConnAndReadTransactionSelector_NewConnection() { TDBTransaction ReadTransaction = new TDBTransaction(); int Result = 0; // Initialize TSrvSetting; needed by DBAccess.Connect() var oink = new TSrvSetting(); Assert.NotNull(oink); DBAccess.SimpleAutoDBConnAndReadTransactionSelector(ATransaction: out ReadTransaction, AName: "Test2Transaction", ASeparateDBConnection: true, AEncapsulatedDBAccessCode: delegate { Result = Convert.ToInt32(ReadTransaction.DataBaseObj.ExecuteScalar("SELECT COUNT(*) FROM p_partner WHERE p_partner_key_n = 43005001", ReadTransaction)); // Is this the expected connection? Assert.AreEqual("Test2Transaction", ReadTransaction.DataBaseObj.ConnectionName); }); // Did we get the expected transaction? Assert.AreEqual("Test2Transaction", ReadTransaction.TransactionName); // Check we get a result Assert.AreEqual(1, Result); // Check the transaction is rolled back Assert.False(ReadTransaction.Valid); }
public void TestDBAccess_SimpleAutoDBConnAndReadTransactionSelector_CantJoinExistingTransaction() { if (FDBType == TDBType.SQLite) { // do not run this test with SQLite return; } TDataBase db = DBAccess.Connect("TestDBAccess_SimpleAutoDBConnAndReadTransactionSelector_CantJoinExistingTransaction"); TDBTransaction FirstTransaction = db.BeginTransaction(ATransactionName: "FirstTransaction"); TDBTransaction ReadTransaction = new TDBTransaction(); int Result = 0; // Initialize TSrvSetting; needed by DBAccess.Connect() var oink = new TSrvSetting(); Assert.NotNull(oink); DBAccess.SimpleAutoDBConnAndReadTransactionSelector(ATransaction: out ReadTransaction, AName: "SecondTransaction", AIsolationLevel: IsolationLevel.Serializable, AEncapsulatedDBAccessCode: delegate { Result = Convert.ToInt32(ReadTransaction.DataBaseObj.ExecuteScalar("SELECT COUNT(*) FROM p_partner WHERE p_partner_key_n = 43005001", ReadTransaction)); // Is this the expected connection? Assert.AreEqual("SecondTransaction", ReadTransaction.DataBaseObj.ConnectionName); }); // Did we get the expected transaction? Assert.AreEqual("SecondTransaction", ReadTransaction.TransactionName); // Check we get a result Assert.AreEqual(1, Result); // Check the new transaction is rolled back Assert.False(ReadTransaction.Valid); // Check the existing transaction is not rolled back Assert.True(FirstTransaction.Valid); // Clear up the FirstTransaction we Began earlier FirstTransaction.Rollback(); }