示例#1
0
        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);
        }
示例#2
0
        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();
        }