public void OrphanDelete()
        {
            User gavin = null;
            Document hia = null;
            Document hia2 = null;

            using (var s = SessionFactory.OpenSession())
            using (var t = s.BeginTransaction())
            {
                gavin = new User("gavin", "secret");
                hia = new Document("HiA", "blah blah blah", gavin);
                hia2 = new Document("HiA2", "blah blah blah blah", gavin);
                gavin.Documents.Add(hia); // NH: added ; I don't understand how can work in H3.2.5 without add
                gavin.Documents.Add(hia2); // NH: added 
                s.Persist(gavin);
                t.Commit();
            }

            using (var s = SessionFactory.OpenSession())
            using (var t = s.BeginTransaction())
            {
                gavin = s.Get<User>("gavin");
                Assert.AreEqual(2, gavin.Documents.Count);
                gavin.Documents.Remove(hia2);
                Assert.IsFalse(gavin.Documents.Contains(hia2));
                Assert.IsTrue(gavin.Documents.Contains(hia));
                Assert.AreEqual(1, gavin.Documents.Count);
                Assert.IsFalse(NHibernateUtil.IsInitialized(gavin.Documents));
                t.Commit();
            }

            using (var s = SessionFactory.OpenSession())
            using (var t = s.BeginTransaction())
            {
                gavin = s.Get<User>("gavin");
                Assert.AreEqual(1, gavin.Documents.Count);
                Assert.IsFalse(gavin.Documents.Contains(hia2));
                Assert.IsTrue(gavin.Documents.Contains(hia));
                Assert.IsFalse(NHibernateUtil.IsInitialized(gavin.Documents));
                Assert.That(s.Get<Document>("HiA2"), Is.Null);
                gavin.Documents.Clear();
                Assert.IsTrue(NHibernateUtil.IsInitialized(gavin.Documents));
                s.Delete(gavin);
                t.Commit();
            }
        }
예제 #2
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();
            }
        }
예제 #3
0
파일: Photo.cs 프로젝트: deAtog/nhcontrib
 public Photo(string title, User owner)
 {
     this.Title = title;
     this.Owner = owner;
 }
        public void SQLQuery()
        {
            using (var s = SessionFactory.OpenSession())
            using (var t = s.BeginTransaction())
            {
                User gavin = new User("gavin", "secret");
                User turin = new User("turin", "tiger");
                gavin.Session.Add("foo", new SessionAttribute("foo", "foo bar baz"));
                gavin.Session.Add("bar", new SessionAttribute("bar", "foo bar baz 2"));
                s.Persist(gavin);
                s.Persist(turin);
                s.Flush();
                s.Clear();

                IList results = s.GetNamedQuery("UserSessionData").SetParameter("uname", "%in").List();
                Assert.AreEqual(2, results.Count);
                // NH Different behavior : NH1612, HHH-2831
                gavin = (User)results[0];
                Assert.AreEqual("gavin", gavin.Name);
                Assert.AreEqual(2, gavin.Session.Count);
                t.Commit();
            }

            using (var s = SessionFactory.OpenSession())
            using (var t = s.BeginTransaction())
            {
                s.Delete("from SessionAttribute");
                s.Delete("from User");
                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();
            }
        }