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); }
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 }