public void MergeTreeWithGeneratedId() { ClearCounts(); var root = new NumberedNode("root", RoundForDialect(DateTime.Now)); var child = new NumberedNode("child", RoundForDialect(DateTime.Now)); using (ISession s = OpenSession()) using (ITransaction tx = s.BeginTransaction()) { root.AddChild(child); s.Persist(root); tx.Commit(); } AssertInsertCount(2); ClearCounts(); root.Description = "The root node"; child.Description = "The child node"; var secondChild = new NumberedNode("second child", RoundForDialect(DateTime.Now)); root.AddChild(secondChild); using (var s = OpenSession()) using (var tx = s.BeginTransaction()) { s.Merge(root); tx.Commit(); } AssertInsertCount(1); AssertUpdateCount(2); }
public void MergeTreeWithGeneratedId() { ClearCounts(); ISession s = OpenSession(); ITransaction tx = s.BeginTransaction(); var root = new NumberedNode("root"); var child = new NumberedNode("child"); root.AddChild(child); s.Persist(root); tx.Commit(); s.Close(); AssertInsertCount(2); ClearCounts(); root.Description = "The root node"; child.Description = "The child node"; var secondChild = new NumberedNode("second child"); root.AddChild(secondChild); s = OpenSession(); tx = s.BeginTransaction(); s.Merge(root); tx.Commit(); s.Close(); AssertInsertCount(1); AssertUpdateCount(2); }
public async Task MergeTreeWithGeneratedIdAsync() { ClearCounts(); var root = new NumberedNode("root"); var child = new NumberedNode("child"); using (ISession s = OpenSession()) using (ITransaction tx = s.BeginTransaction()) { root.AddChild(child); await(s.PersistAsync(root)); await(tx.CommitAsync()); } AssertInsertCount(2); ClearCounts(); root.Description = "The root node"; child.Description = "The child node"; var secondChild = new NumberedNode("second child"); root.AddChild(secondChild); using (var s = OpenSession()) using (var tx = s.BeginTransaction()) { await(s.MergeAsync(root)); await(tx.CommitAsync()); } AssertInsertCount(1); AssertUpdateCount(2); }
public void MergeManaged() { using (ISession s = OpenSession()) { NumberedNode root; using (ITransaction tx = s.BeginTransaction()) { root = new NumberedNode("root", RoundForDialect(DateTime.Now)); s.Persist(root); tx.Commit(); } ClearCounts(); NumberedNode mergedChild; using (var tx = s.BeginTransaction()) { var child = new NumberedNode("child", RoundForDialect(DateTime.Now)); root.AddChild(child); Assert.That(s.Merge(root), Is.SameAs(root)); IEnumerator <NumberedNode> rit = root.Children.GetEnumerator(); rit.MoveNext(); mergedChild = rit.Current; Assert.That(mergedChild, Is.Not.SameAs(child)); Assert.That(s.Contains(mergedChild)); Assert.That(!s.Contains(child)); Assert.That(root.Children.Count, Is.EqualTo(1)); Assert.That(root.Children.Contains(mergedChild)); //assertNotSame( mergedChild, s.Merge(child) ); //yucky :( tx.Commit(); } AssertInsertCount(1); AssertUpdateCount(0); Assert.That(root.Children.Count, Is.EqualTo(1)); Assert.That(root.Children.Contains(mergedChild)); using (var tx = s.BeginTransaction()) { Assert.That( s.CreateCriteria(typeof(NumberedNode)).SetProjection(Projections.RowCount()).UniqueResult(), Is.EqualTo(2)); tx.Rollback(); } } }
public void MergeDeepTreeWithGeneratedId() { ClearCounts(); NumberedNode root; NumberedNode child; NumberedNode grandchild; using (ISession s = OpenSession()) { ITransaction tx = s.BeginTransaction(); root = new NumberedNode("root"); child = new NumberedNode("child"); grandchild = new NumberedNode("grandchild"); root.AddChild(child); child.AddChild(grandchild); root = (NumberedNode)s.Merge(root); tx.Commit(); } AssertInsertCount(3); AssertUpdateCount(0); ClearCounts(); IEnumerator <NumberedNode> rit = root.Children.GetEnumerator(); rit.MoveNext(); child = rit.Current; IEnumerator <NumberedNode> cit = child.Children.GetEnumerator(); cit.MoveNext(); grandchild = cit.Current; grandchild.Description = "the grand child"; var grandchild2 = new NumberedNode("grandchild2"); child.AddChild(grandchild2); using (ISession s = OpenSession()) { ITransaction tx = s.BeginTransaction(); root = (NumberedNode)s.Merge(root); tx.Commit(); } AssertInsertCount(1); AssertUpdateCount(1); ClearCounts(); sessions.Evict(typeof(NumberedNode)); var child2 = new NumberedNode("child2"); var grandchild3 = new NumberedNode("grandchild3"); child2.AddChild(grandchild3); root.AddChild(child2); using (ISession s = OpenSession()) { ITransaction tx = s.BeginTransaction(); root = (NumberedNode)s.Merge(root); tx.Commit(); } AssertInsertCount(2); AssertUpdateCount(0); ClearCounts(); using (ISession s = OpenSession()) { ITransaction tx = s.BeginTransaction(); s.Delete("from NumberedNode where name like 'grand%'"); s.Delete("from NumberedNode where name like 'child%'"); s.Delete("from NumberedNode"); tx.Commit(); } }
public virtual NumberedNode AddChild(NumberedNode child) { children.Add(child); child.Parent = this; return this; }
public void MergeManaged() { ISession s = OpenSession(); ITransaction tx = s.BeginTransaction(); var root = new NumberedNode("root"); s.Persist(root); tx.Commit(); ClearCounts(); tx = s.BeginTransaction(); var child = new NumberedNode("child"); root.AddChild(child); Assert.That(s.Merge(root), Is.SameAs(root)); IEnumerator<NumberedNode> rit = root.Children.GetEnumerator(); rit.MoveNext(); NumberedNode mergedChild = rit.Current; Assert.That(mergedChild, Is.Not.SameAs(child)); Assert.That(s.Contains(mergedChild)); Assert.That(! s.Contains(child)); Assert.That(root.Children.Count, Is.EqualTo(1)); Assert.That(root.Children.Contains(mergedChild)); //assertNotSame( mergedChild, s.Merge(child) ); //yucky :( tx.Commit(); AssertInsertCount(1); AssertUpdateCount(0); Assert.That(root.Children.Count, Is.EqualTo(1)); Assert.That(root.Children.Contains(mergedChild)); tx = s.BeginTransaction(); Assert.That(s.CreateCriteria(typeof (NumberedNode)).SetProjection(Projections.RowCount()).UniqueResult(), Is.EqualTo(2)); tx.Rollback(); s.Close(); }
public void MergeDeepTreeWithGeneratedId() { ClearCounts(); NumberedNode root; NumberedNode child; NumberedNode grandchild; using (ISession s = OpenSession()) { ITransaction tx = s.BeginTransaction(); root = new NumberedNode("root"); child = new NumberedNode("child"); grandchild = new NumberedNode("grandchild"); root.AddChild(child); child.AddChild(grandchild); root = (NumberedNode) s.Merge(root); tx.Commit(); } AssertInsertCount(3); AssertUpdateCount(0); ClearCounts(); IEnumerator<NumberedNode> rit = root.Children.GetEnumerator(); rit.MoveNext(); child = rit.Current; IEnumerator<NumberedNode> cit = child.Children.GetEnumerator(); cit.MoveNext(); grandchild = cit.Current; grandchild.Description = "the grand child"; var grandchild2 = new NumberedNode("grandchild2"); child.AddChild(grandchild2); using (ISession s = OpenSession()) { ITransaction tx = s.BeginTransaction(); root = (NumberedNode) s.Merge(root); tx.Commit(); } AssertInsertCount(1); AssertUpdateCount(1); ClearCounts(); sessions.Evict(typeof (NumberedNode)); var child2 = new NumberedNode("child2"); var grandchild3 = new NumberedNode("grandchild3"); child2.AddChild(grandchild3); root.AddChild(child2); using (ISession s = OpenSession()) { ITransaction tx = s.BeginTransaction(); root = (NumberedNode) s.Merge(root); tx.Commit(); } AssertInsertCount(2); AssertUpdateCount(0); ClearCounts(); using (ISession s = OpenSession()) { ITransaction tx = s.BeginTransaction(); s.Delete("from NumberedNode where name like 'grand%'"); s.Delete("from NumberedNode where name like 'child%'"); s.Delete("from NumberedNode"); tx.Commit(); } }
public async Task MergeDeepTreeWithGeneratedIdAsync() { ClearCounts(); NumberedNode root; NumberedNode child; NumberedNode grandchild; using (ISession s = OpenSession()) { ITransaction tx = s.BeginTransaction(); root = new NumberedNode("root", RoundForDialect(DateTime.Now)); child = new NumberedNode("child", RoundForDialect(DateTime.Now)); grandchild = new NumberedNode("grandchild", RoundForDialect(DateTime.Now)); root.AddChild(child); child.AddChild(grandchild); root = (NumberedNode)await(s.MergeAsync(root)); await(tx.CommitAsync()); } AssertInsertCount(3); AssertUpdateCount(0); ClearCounts(); IEnumerator <NumberedNode> rit = root.Children.GetEnumerator(); rit.MoveNext(); child = rit.Current; IEnumerator <NumberedNode> cit = child.Children.GetEnumerator(); cit.MoveNext(); grandchild = cit.Current; grandchild.Description = "the grand child"; var grandchild2 = new NumberedNode("grandchild2", RoundForDialect(DateTime.Now)); child.AddChild(grandchild2); using (ISession s = OpenSession()) { ITransaction tx = s.BeginTransaction(); root = (NumberedNode)await(s.MergeAsync(root)); await(tx.CommitAsync()); } AssertInsertCount(1); AssertUpdateCount(1); ClearCounts(); await(Sfi.EvictAsync(typeof(NumberedNode))); var child2 = new NumberedNode("child2", RoundForDialect(DateTime.Now)); var grandchild3 = new NumberedNode("grandchild3", RoundForDialect(DateTime.Now)); child2.AddChild(grandchild3); root.AddChild(child2); using (ISession s = OpenSession()) { ITransaction tx = s.BeginTransaction(); root = (NumberedNode)await(s.MergeAsync(root)); await(tx.CommitAsync()); } AssertInsertCount(2); AssertUpdateCount(0); ClearCounts(); using (ISession s = OpenSession()) { ITransaction tx = s.BeginTransaction(); await(s.DeleteAsync("from NumberedNode where name like 'grand%'")); await(s.DeleteAsync("from NumberedNode where name like 'child%'")); await(s.DeleteAsync("from NumberedNode")); await(tx.CommitAsync()); } }
public virtual NumberedNode AddChild(NumberedNode child) { children.Add(child); child.Parent = this; return(this); }