public void TestCRUD()
 {
     // skip test if GUIDs are not supported by database backend
     if (runTest)
     {
         o1 = new GuidHolderIP(42);
         // insert
         o1.Persist();
         // select
         o2 = GuidHolderIP.Retrieve(o1.Id);
         // verify select/insert
         Assert.IsNotNull(o2.Id, "The object could not be retrieved from the database!");
         Assert.AreEqual(o1.Id, o2.Id, "The object could not be retrieved from the database!");
         Assert.AreEqual(o1.SomeValue, o2.SomeValue, "The object could not be retrieved from the database!");
         // update
         o2.Persist();
         // verify update
         o1 = GuidHolderIP.Retrieve(o2.Id);
         // delete
         o2.Remove();
         // verify delete by counting the number of rows
         SqlBuilder sb = new SqlBuilder(StatementType.Count, typeof(GuidHolderIP));
         sb.AddConstraint(Operator.Equals, "Id", o1.Id);
         SqlResult sr = Broker.Execute(sb.GetStatement(true));
         Assert.AreEqual(0, sr.Count, "Object not removed");
     }
 }