Esempio n. 1
0
        public void Can_persist_a_cat_hierarchy()
        {
            //arrange
            var grannyCat = new Cat {
                Name = "Granny", Gender = "F"
            };
            var mommyCat = new Cat {
                Name = "Mommy", Gender = "F"
            };
            var babyCat = new Cat {
                Name = "Baby", Gender = "F"
            };

            try
            {
                var session = _currentScope.CurrentSession;
                session.SaveOrUpdate(grannyCat);
                grannyCat.Kittens.Add(mommyCat);
                mommyCat.Parent = grannyCat;
                mommyCat.Kittens.Add(babyCat);
                babyCat.Parent = mommyCat;
                _currentScope.Commit();
            }
            finally
            {
                _currentScope.End();
            }
            //act
            try
            {
                var session = _currentScope.CurrentSession;
                babyCat = session.Get <Cat>(babyCat.Id);
                babyCat.Parent.Parent.Name = "Gramma";
                var siblingCat = new Cat {
                    Name = "Sibling", Gender = "F"
                };
                babyCat.Parent.Kittens.Add(siblingCat);
                siblingCat.Parent = babyCat.Parent;
                _currentScope.Commit();
            }
            finally
            {
                _currentScope.End();
            }
            //assert
            try
            {
                var session = _currentScope.CurrentSession;
                babyCat = session.Get <Cat>(babyCat.Id);
                //assert persistence
                Assert.AreEqual(2, babyCat.Parent.Kittens.Count);
                Assert.AreEqual("Gramma", babyCat.Parent.Parent.Name);
            }
            finally
            {
                _currentScope.End();
            }
        }