public async Task Test_Transaction_States() { var data0 = DataGen.Person(1, 10).ToArray(); var data1 = DataGen.Person(11, 20).ToArray(); using (var db = new LiteDatabaseAsync(new MemoryStream())) { var person = db.GetCollection <Person>(); // first time transaction will be opened (await db.BeginTransAsync()).Should().BeTrue(); // but in second type transaction will be same (await db.BeginTransAsync()).Should().BeFalse(); await person.InsertAsync(data0); // must commit transaction (await db.CommitAsync()).Should().BeTrue(); // no transaction to commit (await db.CommitAsync()).Should().BeFalse(); // no transaction to rollback; (await db.RollbackAsync()).Should().BeFalse(); (await db.BeginTransAsync()).Should().BeTrue(); // no page was changed but ok, let's rollback anyway (await db.RollbackAsync()).Should().BeTrue(); // auto-commit await person.InsertAsync(data1); (await person.CountAsync()).Should().Be(20); } }