public void TestNH47() { int testCount = 100; object[] al = new object[testCount]; TimeSpan tspan = TimeSpan.Zero; int times = 1000; for (int i = 0; i < times; ++i) { for (int j = 0; j < testCount; ++j) { UnsavedType ut = new UnsavedType(); ut.Id = j + 1 + testCount * (i + 1); ut.TypeName = Guid.NewGuid().ToString(); al[j] = ut; } tspan = tspan.Add(BatchInsert(al)); } Console.WriteLine("Finish average in " + (tspan.TotalMilliseconds / times).ToString() + " milliseconds for " + times.ToString() + " times"); Console.Read(); }
public void TestCRUD() { // make a new object outside of the Session UnsavedType unsavedToSave = new UnsavedType(); unsavedToSave.TypeName = "Simple UnsavedValue"; // open the first session to SaveOrUpdate it - should be Save ISession s1 = OpenSession(); ITransaction t1 = s1.BeginTransaction(); s1.SaveOrUpdate(unsavedToSave); t1.Commit(); s1.Close(); // simple should have been inserted - generating a new key for it Assert.IsTrue(unsavedToSave.Id != 0, "Id should not be zero"); // use the ICriteria interface to get another instance in a different // session ISession s2 = OpenSession(); ITransaction t2 = s2.BeginTransaction(); IList results2 = s2.CreateCriteria(typeof(UnsavedType)) .Add(Expression.Expression.Eq("Id", unsavedToSave.Id)) .List(); Assert.AreEqual(1, results2.Count, "Should have found a match for the new Id"); UnsavedType unsavedToUpdate = (UnsavedType)results2[0]; // make sure it has the same Id Assert.AreEqual(unsavedToSave.Id, unsavedToUpdate.Id, "Should have the same Id"); t2.Commit(); s2.Close(); // passing it to the UI for modification unsavedToUpdate.TypeName = "ui changed it"; // create a new session for the Update ISession s3 = OpenSession(); ITransaction t3 = s3.BeginTransaction(); s3.SaveOrUpdate(unsavedToUpdate); t3.Commit(); s3.Close(); // make sure it has the same Id - if the Id has changed then that means it // was inserted. Assert.AreEqual(unsavedToSave.Id, unsavedToUpdate.Id, "Should have the same Id"); // lets get a list of all the rows in the table to make sure // that there has not been any extra inserts ISession s4 = OpenSession(); ITransaction t4 = s4.BeginTransaction(); IList results4 = s4.CreateCriteria(typeof(UnsavedType)).List(); Assert.AreEqual(1, results4.Count, "Should only be one item"); // lets make sure the object was updated UnsavedType unsavedToDelete = (UnsavedType)results4[0]; Assert.AreEqual(unsavedToUpdate.TypeName, unsavedToDelete.TypeName); s4.Delete(unsavedToDelete); t4.Commit(); s4.Close(); // lets make sure the object was deleted ISession s5 = OpenSession(); try { UnsavedType unsavedNull = (UnsavedType)s5.Load(typeof(UnsavedType), unsavedToDelete.Id); Assert.IsNull(unsavedNull); } catch(ObjectNotFoundException onfe) { // do nothing it was expected Assert.IsNotNull(onfe); //getting ride of 'onfe' is never used compile warning } s5.Close(); }