Beispiel #1
0
        public void Get()
        {
            User gavin = null;
            User turin = null;
            Group g = null;

            using (var s = SessionFactory.OpenSession())
            using (var t = s.BeginTransaction())
            {
                gavin = new User("gavin", "secret");
                turin = new User("turin", "tiger");
                g = new Group("developers");
                g.Users.Add("gavin", gavin);
                g.Users.Add("turin", turin);
                s.Persist(g);
                gavin.Session.Add("foo", new SessionAttribute("foo", "foo bar baz"));
                gavin.Session.Add("bar", new SessionAttribute("bar", "foo bar baz 2"));
                t.Commit();
            }

            using (var s = SessionFactory.OpenSession())
            using (var t = s.BeginTransaction())
            {
                g = s.Get<Group>("developers");
                gavin = (User)g.Users["gavin"];
                turin = (User)g.Users["turin"];
                Assert.That(gavin, Is.Not.Null);
                Assert.That(turin, Is.Not.Null);
                Assert.That(g.Users["emmanuel"], Is.Null);
                Assert.IsFalse(NHibernateUtil.IsInitialized(g.Users));
                Assert.That(gavin.Session["foo"], Is.Not.Null);
                Assert.That(turin.Session["foo"], Is.Null);
                Assert.IsFalse(NHibernateUtil.IsInitialized(gavin.Session));
                Assert.IsFalse(NHibernateUtil.IsInitialized(turin.Session));
                s.Delete(gavin);
                s.Delete(turin);
                s.Delete(g);
                t.Commit();
            }
        }
        public void IndexFormulaMap()
        {
            User gavin = null;
            User turin = null;
            Group g = null;
            IDictionary smap = null;

            using (var s = SessionFactory.OpenSession())
            using (var t = s.BeginTransaction())
            {
                gavin = new User("gavin", "secret");
                turin = new User("turin", "tiger");
                g = new Group("developers");
                g.Users.Add("gavin", gavin);
                g.Users.Add("turin", turin);
                s.Persist(g);
                gavin.Session.Add("foo", new SessionAttribute("foo", "foo bar baz"));
                gavin.Session.Add("bar", new SessionAttribute("bar", "foo bar baz 2"));
                t.Commit();
            }

            using (var s = SessionFactory.OpenSession())
            using (var t = s.BeginTransaction())
            {
                g = s.Get<Group>("developers");
                Assert.AreEqual(2, g.Users.Count);
                g.Users.Remove("turin");
                smap = ((User)g.Users["gavin"]).Session;
                Assert.AreEqual(2, smap.Count);
                smap.Remove("bar");
                t.Commit();
            }

            using (var s = SessionFactory.OpenSession())
            using (var t = s.BeginTransaction())
            {
                g = s.Get<Group>("developers");
                Assert.AreEqual(1, g.Users.Count);
                smap = ((User)g.Users["gavin"]).Session;
                Assert.AreEqual(1, smap.Count);
                gavin = (User)g.Users["gavin"]; // NH: put in JAVA return the previous value
                g.Users["gavin"] = turin;
                s.Delete(gavin);
                Assert.AreEqual(0, s.CreateQuery("select count(*) from SessionAttribute").UniqueResult<long>());
                t.Commit();
            }

            using (var s = SessionFactory.OpenSession())
            using (var t = s.BeginTransaction())
            {
                g = s.Get<Group>("developers");
                Assert.AreEqual(1, g.Users.Count);
                turin = (User)g.Users["turin"];
                smap = turin.Session;
                Assert.AreEqual(0, smap.Count);
                Assert.AreEqual(1L, s.CreateQuery("select count(*) from User").UniqueResult<long>());
                s.Delete(g);
                s.Delete(turin);
                Assert.AreEqual(0, s.CreateQuery("select count(*) from User").UniqueResult<long>());
                t.Commit();
            }
        }
        public void RemoveClear()
        {
            User gavin = null;
            User turin = null;
            Group g = null;

            using (var s = SessionFactory.OpenSession())
            using (var t = s.BeginTransaction())
            {
                gavin = new User("gavin", "secret");
                turin = new User("turin", "tiger");
                g = new Group("developers");
                g.Users.Add("gavin", gavin);
                g.Users.Add("turin", turin);
                s.Persist(g);
                gavin.Session.Add("foo", new SessionAttribute("foo", "foo bar baz"));
                gavin.Session.Add("bar", new SessionAttribute("bar", "foo bar baz 2"));
                t.Commit();
            }

            using (var s = SessionFactory.OpenSession())
            using (var t = s.BeginTransaction())
            {
                g = s.Get<Group>("developers");
                gavin = (User)g.Users["gavin"];
                turin = (User)g.Users["turin"];
                Assert.IsFalse(NHibernateUtil.IsInitialized(g.Users));
                g.Users.Clear();
                gavin.Session.Remove("foo");
                Assert.IsTrue(NHibernateUtil.IsInitialized(g.Users));
                Assert.IsTrue(NHibernateUtil.IsInitialized(gavin.Session));
                t.Commit();
            }

            using (var s = SessionFactory.OpenSession())
            using (var t = s.BeginTransaction())
            {
                g = s.Get<Group>("developers");
                //Assert.IsTrue( g.Users.IsEmpty() );
                //Assert.IsFalse( NHibernateUtil.IsInitialized( g.getUsers() ) );
                gavin = s.Get<User>("gavin");
                Assert.IsFalse(gavin.Session.Contains("foo"));
                Assert.IsFalse(NHibernateUtil.IsInitialized(gavin.Session));
                s.Delete(gavin);
                s.Delete(turin);
                s.Delete(g);
                t.Commit();
            }
        }