Beispiel #1
0
        public void TestRollback()
        {
            const string dbPath = "TestRollback.s3db";
            const string value  = "committed";

            InsertValueInNewDb(value, dbPath, false);

            var connString = new SqliteConnectionStringBuilder {
                DataSource = Path.Combine(Path.GetTempPath(), dbPath)
            };
            var adapter = new SqliteCommandChannelFactory().Open(connString);

            Assert.AreEqual((long)0, adapter.FetchValue("SELECT COUNT(*) FROM test"));
        }
Beispiel #2
0
        public void TestCommit()
        {
            const string dbPath = "TestCommit.s3db";
            const string value  = "committed";

            InsertValueInNewDb(value, dbPath, true);

            var connString = new SqliteConnectionStringBuilder {
                DataSource = Path.Combine(Path.GetTempPath(), dbPath)
            };
            var adapter = new SqliteCommandChannelFactory().Open(connString);

            Assert.AreEqual("committed", adapter.FetchValue("SELECT reference FROM test LIMIT 1"));
        }
Beispiel #3
0
        private static void InsertValueInNewDb(string value, string dbName, bool commit)
        {
            var connString = new SqliteConnectionStringBuilder {
                DataSource = Path.Combine(Path.GetTempPath(), dbName)
            };
            var adapter = new SqliteCommandChannelFactory().Create(new CreationParameters <SqliteConnectionStringBuilder>(connString, Resources.TestCommitRollback, true));

            adapter.ExecuteInTransaction(scope =>
            {
                adapter.Execute("INSERT INTO test (reference) VALUES (@value)", new Dictionary <string, IConvertible> {
                    { "@value", value }
                });
                return(commit ? TransactionResult.Commit : TransactionResult.Rollback);
            });
        }
Beispiel #4
0
        public void TestNestedTransactions()
        {
            var connString = new SqliteConnectionStringBuilder {
                DataSource = Path.Combine(Path.GetTempPath(), "TestNestedTransactions.s3db")
            };
            var adapter = new SqliteCommandChannelFactory().Create(new CreationParameters <SqliteConnectionStringBuilder>(connString, Resources.TestCommitRollback, true));

            DoSomethingInsertAndCommit(adapter, "B",
                                       () => DoSomethingInsertAndRollback(adapter, "C",
                                                                          () => InsertDoSomethingAndCommit(adapter, "D",
                                                                                                           () => InsertDoSomethingAndRollback(adapter, "E", () => { })
                                                                                                           )
                                                                          )
                                       );

            Assert.AreEqual(1, GetCount(adapter));
        }
Beispiel #5
0
 public void Initializa()
 {
     _commandChannelFactory       = new SqliteCommandChannelFactory();
     _memoryCommandChannelFactory = new MemorySqliteCommandChannelFactory();
 }