public void LazyProxyRemainsAttachedToNewSessionWhenAccessed() {
            ActiveRecordStarter.Initialize(GetConfigSource(), typeof(ScopelessLazy), typeof(ObjectWithLazyAssociation2),
                                           typeof(VeryLazyObject2));

            Recreate();

            var lazy = new VeryLazyObject2();
            lazy.Title = "test";
            ActiveRecordMediator.Save(lazy);

            var obj = new ObjectWithLazyAssociation2();
            obj.LazyObj = lazy;
            ActiveRecordMediator.Save(obj);

            var objFromDb = (ObjectWithLazyAssociation2)ActiveRecordMediator.FindByPrimaryKey(typeof(ObjectWithLazyAssociation2), obj.Id);
            using (new SessionScope()) {
                Assert.AreEqual("test", objFromDb.LazyObj.Title);
                var objSession = (objFromDb.LazyObj as NHibernate.Proxy.INHibernateProxy).HibernateLazyInitializer.Session;
                Assert.IsTrue(objSession.IsConnected && objSession.IsOpen, "Session did not remain open after accessing lazy object within a new SessionScope");
            }
        }
        public void CanLoadLazyBelongsToOutsideOfScope() {
            ActiveRecordStarter.Initialize(GetConfigSource(), typeof (ScopelessLazy), typeof (ObjectWithLazyAssociation2),
                                           typeof (VeryLazyObject2));

            Recreate();

            var lazy = new VeryLazyObject2();
            lazy.Title = "test";
            ActiveRecordMediator.Save(lazy);

            var obj = new ObjectWithLazyAssociation2();
            obj.LazyObj = lazy;
            ActiveRecordMediator.Save(obj);

            var objFromDb = (ObjectWithLazyAssociation2)ActiveRecordMediator.FindByPrimaryKey(typeof(ObjectWithLazyAssociation2), obj.Id);
            Assert.False(NHibernate.NHibernateUtil.IsInitialized(objFromDb.LazyObj));
            Assert.AreEqual("test", objFromDb.LazyObj.Title);
            Assert.True(NHibernate.NHibernateUtil.IsInitialized(objFromDb.LazyObj));
        }