public void SaveOrUpdate_Save() { using (LogSpy ls = new LogSpy(LogManager.GetLogger("NHibernate"), Level.Warn)) using (ISession s = OpenSession()) { ITransaction t = s.BeginTransaction(); Parent parent = new Parent() { Id = "parent", Children = new List<Child>(), }; s.SaveOrUpdate(parent); t.Commit(); long actual = s.CreateQuery("select count(p) from Parent p").UniqueResult<long>(); Assert.That(actual, Is.EqualTo(1)); string[] warnings = GetAssignedIdentifierWarnings(ls); Assert.That(warnings.Length, Is.EqualTo(1)); Assert.IsTrue(warnings[0].Contains("parent")); } }
public void SaveOrUpdate_Update() { using (ISession s = OpenSession()) { ITransaction t = s.BeginTransaction(); s.Save(new Parent() { Id = "parent", Name = "before" }); t.Commit(); } using (LogSpy ls = new LogSpy(LogManager.GetLogger("NHibernate"), Level.Warn)) using (ISession s = OpenSession()) { ITransaction t = s.BeginTransaction(); Parent parent = new Parent() { Id = "parent", Name = "after", }; s.SaveOrUpdate(parent); t.Commit(); string[] warnings = GetAssignedIdentifierWarnings(ls); Assert.That(warnings.Length, Is.EqualTo(1)); Assert.IsTrue(warnings[0].Contains("parent")); } using (ISession s = OpenSession()) { Parent parent = s.CreateQuery("from Parent").UniqueResult<Parent>(); Assert.That(parent.Name, Is.EqualTo("after")); } }
public void InsertCascadeNoWarning() { using (ISession s = OpenSession()) { ITransaction t = s.BeginTransaction(); s.Save(new Child() { Id = "persistedChild" }); t.Commit(); } using (LogSpy ls = new LogSpy(LogManager.GetLogger("NHibernate"), Level.Warn)) using (ISession s = OpenSession()) { ITransaction t = s.BeginTransaction(); Parent parent = new Parent() { Id = "parent", Children = new List<Child>(), }; s.Save(parent); Child child1 = s.Load<Child>("persistedChild"); child1.Parent = parent; parent.Children.Add(child1); Child child2 = new Child() { Id = "transientChild", Parent = parent }; s.Save(child2); parent.Children.Add(child2); t.Commit(); long actual = s.CreateQuery("select count(c) from Child c").UniqueResult<long>(); Assert.That(actual, Is.EqualTo(2)); string[] warnings = GetAssignedIdentifierWarnings(ls); Assert.That(warnings.Length, Is.EqualTo(0)); } }