示例#1
0
		public void When_commiting_items_in_DTC_transaction_will_add_items_to_2nd_level_cache()
		{
			using (var tx = new TransactionScope())
			{
				using (var s = sessions.OpenSession())
				{
					s.Save(new Nums {ID = 29, NumA = 1, NumB = 3});
				}
				tx.Complete();
			}

			using (var tx = new TransactionScope())
			{
				using (var s = sessions.OpenSession())
				{
					var nums = s.Load<Nums>(29);
					Assert.AreEqual(1, nums.NumA);
					Assert.AreEqual(3, nums.NumB);
				}
				tx.Complete();
			}

			//closing the connection to ensure we can't really use it.
			var connection = sessions.ConnectionProvider.GetConnection();
			sessions.ConnectionProvider.CloseConnection(connection);

			using (var tx = new TransactionScope())
			{
				using (var s = sessions.OpenSession(connection))
				{
					var nums = s.Load<Nums>(29);
					Assert.AreEqual(1, nums.NumA);
					Assert.AreEqual(3, nums.NumB);
				}
				tx.Complete();
			}

			using (var s = sessions.OpenSession())
			using (var tx = s.BeginTransaction())
			{
				var nums = s.Load<Nums>(29);
				s.Delete(nums);
				tx.Commit();
			}
		}
示例#2
0
		public void When_using_two_sessions()
		{
			object id1, id2;
			using (var tx = new TransactionScope())
			{
				using (ISession s1 = sessions.OpenSession())
				using (ISession s2 = sessions.OpenSession())
				{

					id1 = s1.Save(new Nums { NumA = 1, NumB = 2, ID = 5 });

					id2 = s2.Save(new Nums { NumA = 1, NumB = 2, ID = 6 });

					tx.Complete();
				}
			}

			using (ISession s = sessions.OpenSession())
			using (ITransaction tx = s.BeginTransaction())
			{
				Nums nums = s.Get<Nums>(id1);
				Assert.IsNotNull(nums);
				s.Delete(nums);

				nums = s.Get<Nums>(id2);
				Assert.IsNotNull(nums);
				s.Delete(nums);

				tx.Commit();
			}
		}
示例#3
0
		public void When_committing_transaction_scope_will_commit_transaction()
		{
			object id;
			using (var tx = new TransactionScope())
			{
				using (ISession s = sessions.OpenSession())
				{
					id = s.Save(new Nums { NumA = 1, NumB = 2, ID = 5 });
				}
				tx.Complete();
			}

			using (ISession s = sessions.OpenSession())
			using (ITransaction tx = s.BeginTransaction())
			{
				Nums nums = s.Get<Nums>(id);
				Assert.IsNotNull(nums);
				s.Delete(nums);

				tx.Commit();
			}
		}
示例#4
0
		public void Will_not_save_when_flush_mode_is_never()
		{
			object id;
			using (var tx = new TransactionScope())
			{
				using (ISession s = sessions.OpenSession())
				{
					s.FlushMode = FlushMode.Never;
					id = s.Save(new Nums { NumA = 1, NumB = 2, ID = 5 });
				}
				tx.Complete();
			}

			using (ISession s = sessions.OpenSession())
			using (ITransaction tx = s.BeginTransaction())
			{
				Nums nums = s.Get<Nums>(id);
				Assert.IsNull(nums);
				tx.Commit();
			}
		}
示例#5
0
		public void When_using_two_sessions()
		{
			if (!TestDialect.SupportsConcurrentTransactions)
				Assert.Ignore(Dialect.GetType().Name + " does not support concurrent transactions.");

			object id1, id2;
			using (var tx = new TransactionScope())
			{
				using (ISession s1 = sessions.OpenSession())
				using (ISession s2 = sessions.OpenSession())
				{

					id1 = s1.Save(new Nums { NumA = 1, NumB = 2, ID = 5 });

					id2 = s2.Save(new Nums { NumA = 1, NumB = 2, ID = 6 });

					tx.Complete();
				}
			}

			using (ISession s = sessions.OpenSession())
			using (ITransaction tx = s.BeginTransaction())
			{
				Nums nums = s.Get<Nums>(id1);
				Assert.IsNotNull(nums);
				s.Delete(nums);

				nums = s.Get<Nums>(id2);
				Assert.IsNotNull(nums);
				s.Delete(nums);

				tx.Commit();
			}
		}