Beispiel #1
0
		public virtual void RemoveParty(Party party)
		{
			parties.Remove(party);
			party.Contract = null;
		}
		public void ImmutableEntityRemoveImmutableFromInverseMutableCollectionByDeref()
		{
			ClearCounts();
	
			Contract c = new Contract(null, "gavin", "phone");
			ContractVariation cv1 = new ContractVariation(1, c);
			cv1.Text = "expensive";
			ContractVariation cv2 = new ContractVariation(2, c);
			cv2.Text = "more expensive";
			Party party = new Party( "party1" );
			c.AddParty(party);
			ISession s = OpenSession();
			ITransaction t = s.BeginTransaction();
			s.Persist(c);
			t.Commit();
			s.Close();
	
			AssertInsertCount(4);
			AssertUpdateCount(0);
			ClearCounts();
	
			party = c.Parties.First();
			party.Contract = null;
	
			s = OpenSession();
			t = s.BeginTransaction();
			s.Update(party);
			t.Commit();
			s.Close();
	
			s = OpenSession();
			t = s.BeginTransaction();
			party = s.Get<Party>(party.Id);
			Assert.That(party.Contract, Is.Not.Null);
			t.Commit();
			s.Close();
	
			AssertUpdateCount(0);
			ClearCounts();
	
			s = OpenSession();
			t = s.BeginTransaction();
			c = s.CreateCriteria<Contract>().UniqueResult<Contract>();
			Assert.That(c.CustomerName, Is.EqualTo("gavin"));
			Assert.That(c.Variations.Count, Is.EqualTo(2));
			IEnumerator<ContractVariation> it = c.Variations.GetEnumerator();
			it.MoveNext();
			cv1 = it.Current;
			Assert.That(cv1.Text, Is.EqualTo("expensive"));
			it.MoveNext();
			cv2 = it.Current;
			Assert.That(cv2.Text, Is.EqualTo("more expensive"));
			Assert.That(c.Parties.Count, Is.EqualTo(1));
		    party = c.Parties.First();
			Assert.That(party.Name, Is.EqualTo("party1"));
			Assert.That(party.Contract, Is.SameAs(c));
			s.Delete(c);
			Assert.That(s.CreateCriteria<Contract>().SetProjection(Projections.RowCount()).UniqueResult(), Is.EqualTo(0));
			Assert.That(s.CreateCriteria<ContractVariation>().SetProjection(Projections.RowCount()).UniqueResult(), Is.EqualTo(0));
			t.Commit();
			s.Close();
	
			AssertUpdateCount(0);
			AssertDeleteCount(4);
		}
Beispiel #3
0
		public virtual void AddParty(Party party)
		{
			parties.Add(party);
			party.Contract = this;
		}
		public void ImmutableEntityAddImmutableToInverseMutableCollection()
		{
			ClearCounts();
	
			Contract c = new Contract(null, "gavin", "phone");
			ContractVariation cv1 = new ContractVariation(1, c);
			cv1.Text = "expensive";
			ContractVariation cv2 = new ContractVariation(2, c);
			cv2.Text = "more expensive";
			ISession s = OpenSession();
			ITransaction t = s.BeginTransaction();
			s.Persist(c);
			Party party = new Party("a party");
			s.Persist(party);
			t.Commit();
			s.Close();
	
			AssertInsertCount(4);
			AssertUpdateCount(0);
			ClearCounts();
	
			s = OpenSession();
			t = s.BeginTransaction();
			c.AddParty(new Party("a new party"));
			s.Update(c);
			t.Commit();
			s.Close();
	
			AssertInsertCount(1);
			AssertUpdateCount(0);
			ClearCounts();
	
			s = OpenSession();
			t = s.BeginTransaction();
			c.AddParty(party);
			s.Update(c);
			t.Commit();
			s.Close();
	
			s = OpenSession();
			t = s.BeginTransaction();
			c = s.CreateCriteria<Contract>().UniqueResult<Contract>();
			Assert.That(c.CustomerName, Is.EqualTo("gavin"));
			Assert.That(c.Variations.Count, Is.EqualTo(2));
			IEnumerator<ContractVariation> it = c.Variations.GetEnumerator();
			it.MoveNext();
			cv1 = it.Current;
			Assert.That(cv1.Text, Is.EqualTo("expensive"));
			it.MoveNext();
			cv2 = it.Current;
			Assert.That(cv2.Text, Is.EqualTo("more expensive"));
			// Assert.That(c.Parties.Count, Is.EqualTo(2));
			s.Delete(c);
			s.Delete(party); // NH-specific
			Assert.That(s.CreateCriteria<Contract>().SetProjection(Projections.RowCount()).UniqueResult(), Is.EqualTo(0));
			Assert.That(s.CreateCriteria<ContractVariation>().SetProjection(Projections.RowCount()).UniqueResult(), Is.EqualTo(0));
			t.Commit();
			s.Close();
	
			AssertUpdateCount(0);
			AssertDeleteCount(5); // NH-specific
		}