void TransactionTest(bool withCommit) { using (FileLogger l = new FileLogger("MdbContextTest", new FileLogSettings() { DateFolderMask = "yyyy-MM-dd" })) { using (var ctx = new MdbContext(_cn)) { ctx.BeginTransaction(); createTestTable(ctx, l); insertTestTable(ctx, l); selectTestTable(ctx, l); if (withCommit) { ctx.Commit(); dropTestTable(ctx, l); } else { //Отменяет все коммиты ctx.RollBack(); } } } }
static void createTestTable(MdbContext ctx, FileLogger l) { l.Debug("Create Test Table Start"); int i = 0; string sql = @"Create Table TestTable( ID uniqueidentifier not null primary key, Name varchar(128) not null, DateOper datetime not null, Notes varchar(256) null, Handle int not null)" ; ctx.BeginTransaction(); i = ctx.Execute(sql); ctx.Commit(); }
static void insertTestTable(MdbContext ctx, FileLogger l) { l.Debug("Insert Test Table Start"); string sql = @"Insert Into TestTable (ID, Name, DateOper, Handle) Values(@ID, @Name, @DateOper, @Handle)" ; ctx.BeginTransaction(); int i = 0; for (; i < 100; i++) { ctx.Execute(sql, new MdbParameter("@ID", Guid.NewGuid()), new MdbParameter("@Name", "Тестовая строка № " + i.ToString()), new MdbParameter("@DateOper", vbo.Date().AddDays(i - 1000)), new MdbParameter("@Handle", i) { NullIfEmpty = false });; } ctx.Commit(); l.Debug($"Insert Test Table Finish rows result {i}"); }