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