OK, so now I've implemented ISessionManager.OpenStatelessSession(). Thanks
to Henry for committing it in the Castle trunk.

Now, I have a new problem with it over DetachedCriteria with the following
error message:

*Unable to cast object of type
'Castle.Facilities.NHibernateIntegration.StatelessSessionDelegate' to type
'NHibernate.Engine.ISessionImplementor'.*

It's reproduced using the following test:

        [Test]
        public void TestTransactionStatelessUsingDetachedCriteria()
        {
                RootService service = container.Resolve<RootService>();

                string blogName = "Delicious Food!";

                var blogA = 
service.CreateBlogStatelessUsingDetachedCriteria(blogName);
                Assert.IsNotNull(blogA);

                var blogB = 
service.FindBlogStatelessUsingDetachedCriteria(blogName);
                Assert.IsNotNull(blogB);

                Assert.AreEqual(blogA.Name, blogB.Name);
        }



        [Transaction]
        public virtual Blog FindBlogStatelessUsingDetachedCriteria(string name)
        {
                DetachedCriteria dc = DetachedCriteria.For<Blog>();
                dc.Add(Property.ForName("Name").Eq(name));

                var session = this.SessionManager.OpenStatelessSession();
                ////return dc.GetExecutableCriteria(((StatelessSessionDelegate)
session).InnerSession).UniqueResult<Blog>();
                return dc.GetExecutableCriteria(session).UniqueResult<Blog>();
        }

AFAIK, it seems to be related to an old issue with
ISessionManager.OpenSession() which is discussed here:
http://forum.castleproject.org/viewtopic.php?t=2002. As hammett suggested,
to workaround the issue by accessing the ISession directly from
SessionDelegate. So, if I uncommented this line (return
dc.GetExecutableCriteria(((StatelessSessionDelegate)
session).InnerSession).UniqueResult<Blog>();), it would just work.

Actually, I'm confused and wondering how it can work and cannot. Is that
related to NHibernateFacility itself or NHibernate directly?

Thanks.




-- 
Regards,

Maximilian Haru Raditya






2010/11/22 Henry Conceição <[email protected]>

> I didn't put much thinking on it, but I think that a
> StatelessSessionDelegate, implementating both interfaces (ISession and
> IStatelessSession) would be the simplest thing on this situation,
> since you could reuse the current machinery for session
> store/management.
>
> Cheers,
> Henry Conceição
>
>
>
> On Sun, Nov 21, 2010 at 4:10 AM, Maximilian Raditya <[email protected]>
> wrote:
>  > Hi everybody,
> >
> > I've recently proposed a suggestion to add OpenStatelessSession in
> > ISessionManager of NHibernate Facility
> > (http://issues.castleproject.org/issue/FACILITIES-142). Henry said
> patchs
> > are always welcome, so I decide to try it myself.
> >
> > I've downloaded the source code (by cloning it; I'm new to Git). I'm new
> to
> > the source code and I'm trying to understand it. Based on my
> understanding,
> > it seems a lot of work need to be done to add IStatelessSession support.
> >
> > For starting point, I've added OpenStatelessSession() in ISessionManager
> and
> > DefaultSessionManager (just the signature, not the implementation yet).
> And
> > then I wonder what the next step should be.
> >
> > In OpenSession() implementation, I found SessionDelegate and
> ISessionStore.
> > My questions for now:
> >
> > it seems I should create StatelessSessionDelegate, right?
> > should I create a separate IStatelessSessionStore interface or add
> > FindCompatibleStatelessSession in ISessionStore?
> >
> > Here the link to my Git commit:
> >
> https://github.com/mahara/Castle.Facilities.NHibernateIntegration/commit/3cd576a8fb06705440ea85729c1bf34952da6668
> .
> > It's just the initial signature, not the implemetation yet.
> >
> > I hope someone willing to help me on doing this.
> >
> > Thanks.
> >
> >
> >
> >
> > --
> > Regards,
> >
> > Maximilian Haru Raditya
> >
> >
> > --
>  > You received this message because you are subscribed to the Google
> Groups
> > "Castle Project Development List" group.
> > To post to this group, send email to
> [email protected].
> > To unsubscribe from this group, send email to
> > [email protected]<castle-project-devel%[email protected]>
> .
> > For more options, visit this group at
> > http://groups.google.com/group/castle-project-devel?hl=en.
> >
>
> --
> You received this message because you are subscribed to the Google Groups
> "Castle Project Development List" group.
> To post to this group, send email to [email protected]
> .
> To unsubscribe from this group, send email to
> [email protected]<castle-project-devel%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/castle-project-devel?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Castle Project Development List" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/castle-project-devel?hl=en.

Reply via email to