You will have to modify the Rhino.Commons source code to share the
unitofwork.cerrentsession.  I will try to post a documentation article on
ayendes site sometime in the future. In the mean time here is what I have
for my facility and resolver:
public class RhinoSecurityFacility : AbstractFacility
    {
        protected override void Init()
        {

            Kernel.Register(
            Component.For<IAuthorizationService>()
            .ImplementedBy<AuthorizationService>()
            .LifeStyle.Transient,
            Component.For<IAuthorizationRepository>()
            .ImplementedBy<AuthorizationRepository>()
            .LifeStyle.Transient,
            Component.For<IPermissionsBuilderService>()
            .ImplementedBy<PermissionsBuilderService>()
            .LifeStyle.Transient,
            Component.For<IPermissionsService>()
            .ImplementedBy<PermissionsService>()
            .LifeStyle.Transient
            );

            Kernel.Resolver.AddSubResolver(new
ServiceIsessionResolver(Kernel));

            ServiceLocator.SetLocatorProvider(() => new
WindsorServiceLocator(IoC.Container));
        }
    }

public class ServiceIsessionResolver : ISubDependencyResolver
    {
        private IKernel Kernel { get; set; }

        public ServiceIsessionResolver(IKernel kernel)
        {
            Kernel = kernel;
        }

        public object Resolve(CreationContext context,
ISubDependencyResolver contextHandlerResolver, ComponentModel model,
DependencyModel dependency)
        {
            return Kernel.Resolve<IUnitOfWorkFactory>().CurrentSession;
        }

        public bool CanResolve(CreationContext context,
ISubDependencyResolver contextHandlerResolver, ComponentModel model,
DependencyModel dependency)
        {
            return typeof(ISession).IsAssignableFrom(dependency.TargetType);
        }
    }


On Wed, Mar 17, 2010 at 12:09 PM, patricia <[email protected]>wrote:

> Hey Beto, Everyone
>
> I've made a facility, and set everything up like the thread you posted
> said to. But i'm not sure where i need to put the [DoNotWire]
> attribute!    I'm getting this error:
> {"A cycle was detected when trying to resolve a dependency. The
> dependency graph that resulted in a cycle is:  - Service dependency
> 'session' type 'NHibernate.ISession' for
> Void .ctor(NHibernate.ISession) in type
> Rhino.Security.Services.AuthorizationRepository  - Parameter
> dependency 'configurationFileName' type 'System.String' for
> Void .ctor(System.Reflection.Assembly[], System.String) in type
> Rhino.Commons.NHibernateUnitOfWorkFactory  + Parameter dependency
> 'configurationFileName' type 'System.String' for
> Void .ctor(System.Reflection.Assembly[], System.String) in
> Rhino.Commons.NHibernateUnitOfWorkFactory "}
>
>
> this is my facility and  sub resolver
>
>
> Public Class RhinoSecurityFacility
>    Inherits AbstractFacility
>
>
>
>    Protected Overloads Overrides Sub Init()
>        Kernel.Resolver.AddSubResolver(New
> ServiceISessionResolver(Kernel))
>
>        Kernel.Register( _
>            Component.For(Of INHibernateInitializationAware)() _
>                .ImplementedBy(Of NHibernateDbSchemaGeneration)())
>
>
>        Kernel.Register( _
>            Component.For(Of IEntityInformationExtractor(Of Org))() _
>                .ImplementedBy(Of
> VBRhinoSample.OrgInformationExtractor)() _
>        )
>        Kernel.Register( _
>            Component.For(Of IEntityInformationExtractor(Of User))() _
>                .ImplementedBy(Of
> VBRhinoSample.UserInformationExtractor)() _
>        )
>        Kernel.Register( _
>            Component.For(Of IEntityInformationExtractor(Of
> CustomField))() _
>                .ImplementedBy(Of
> VBRhinoSample.CustomFieldInformationExtractor)() _
>        )
>        Kernel.Register( _
>            Component.For(Of IEntityInformationExtractor(Of
> Qualification))() _
>            .ImplementedBy(Of
> VBRhinoSample.QualificationFieldInformationExtractor)() _
>        )
>
>
>        Kernel.Register( _
>             Component.For(Of IPermissionsService) _
>             .ImplementedBy(Of
>
> Rhino.Security.Services.PermissionsService).LifeStyle.Is(Castle.Core.LifestyleType.Transient)
> _
>         )
>        Kernel.Register( _
>            Component.For(Of IPermissionsBuilderService) _
>            .ImplementedBy(Of
>
> Rhino.Security.Services.PermissionsBuilderService).LifeStyle.Is(Castle.Core.LifestyleType.Transient)
> _
>        )
>
>        Kernel.Register( _
>            Component.For(Of IAuthorizationRepository) _
>            .ImplementedBy(Of
>
> Rhino.Security.Services.AuthorizationRepository).LifeStyle.Is(Castle.Core.LifestyleType.Transient)
> _
>        )
>        Kernel.Register( _
>            Component.For(Of IAuthorizationService) _
>            .ImplementedBy(Of
>
> Rhino.Security.Services.AuthorizationService).LifeStyle.Is(Castle.Core.LifestyleType.Transient)
> _
>        )
>
>        Kernel.Resolver.AddSubResolver(New
> ServiceISessionResolver(Kernel))
>
>
>
>    End Sub
> End Class
>
> Public Class ServiceISessionResolver
>    Implements Castle.MicroKernel.ISubDependencyResolver
>
>    Dim m_kernel As Castle.MicroKernel.IKernel
>
>    Public Sub New(ByVal kernel As Castle.MicroKernel.IKernel)
>        m_kernel = kernel
>
>    End Sub
>
>    Public Function Resolve(ByVal context As CreationContext, ByVal
> contexthandlerResolver As ISubDependencyResolver, ByVal model As
> Castle.Core.ComponentModel, ByVal dependency As DependencyModel) As
> Object Implements Castle.MicroKernel.ISubDependencyResolver.Resolve
>        Return m_kernel.Resolve(Of IUnitOfWorkFactory).CurrentSession
>
>    End Function
>
>    Public Function CanResolve(ByVal context As
> Castle.MicroKernel.CreationContext, ByVal contextHandlerResolver As
> Castle.MicroKernel.ISubDependencyResolver, ByVal model As
> Castle.Core.ComponentModel, ByVal dependency As
> Castle.Core.DependencyModel) As Boolean Implements
> Castle.MicroKernel.ISubDependencyResolver.CanResolve
>        Return True
>
>    End Function
>
> End Class
>
>
> I THINK I'm close to finally getting this working!
>
> i tried putting the DoNotWire on the currentsession property in the
> UnitOfWork.cs   and on the CurrentSession property in the
> nhibernateUnitOfWorkFactory.cs
>
>
> Help Please!  and thank you :)
>
>
> On 16 Mar, 15:17, Patricia Vandermeer <[email protected]>
> wrote:
> > Thanks Beto!
> > that explains a few things!
> >
> > On Tue, Mar 16, 2010 at 2:50 PM, Beto <[email protected]> wrote:
> > > Patricia,
> >
> > > You will need to create your own facility and resolver, look at this:
> >
> > >http://groups.google.co.uk/group/rhino-tools-dev/browse_thread/thread.
> ..
> >
> > > On 16 Mar, 09:41, Patricia Vandermeer <[email protected]>
> > > wrote:
> > > > I found this thread:
> > >http://groups.google.co.uk/group/rhino-tools-dev/browse_thread/thread.
> ..
> >
> > > > which explains where it went.  But i'm having the same problem that
> Dan
> > > was
> > > > having!
> >
> > > > Can't create component
> 'Rhino.Security.Services.AuthorizationRepository'
> > > as
> >
> > > > > it has dependencies to be satisfied.
> > > > > Rhino.Security.Services.AuthorizationRepository is waiting for the
> > > > > following dependencies:
> >
> > > > > Services:
> > > > > - NHibernate.ISession which was not registered.
> >
> > > > Thanks again for the help!
> >
> > > > On Tue, Mar 16, 2010 at 12:11 PM, patricia <
> > > [email protected]>wrote:
> >
> > > > > Hello, Me again,
> >
> > > > > I'm trying to build my project with fresh versions of rhino commons
> > > > > and security and castle windsor.  But i seem to have lost
> > > > > RhinoSecurityFacility !
> >
> > > > > in the RhinoSecNhSetup.zip   sample app it seems to be in
> > > > > rhino.security  but it is no where to be found in the version i got
> > > > > from github!
> >
> > > > > here is what visual studio's comes up with when i do a "go to
> > > > > definition"  on it in the sample project:
> >
> > > > > using Castle.MicroKernel.Facilities;
> > > > > using System;
> >
> > > > > namespace Rhino.Security
> > > > > {
> > > > >    public class RhinoSecurityFacility : AbstractFacility
> > > > >    {
> > > > >        public RhinoSecurityFacility(Type userType);
> > > > >        public RhinoSecurityFacility(SecurityTableStructure
> > > > > securityTableStructure, Type userType);
> >
> > > > >        protected override void Init();
> > > > >    }
> > > > > }
> >
> > > > > I have a feeling this is me just looking in all the wrong places,
> but
> > > > > i've run out of places to look!
> >
> > > > > Thanks for the help!
> >
> > > > > --
> > > > > You received this message because you are subscribed to the Google
> > > Groups
> > > > > "Rhino Tools Dev" group.
> > > > > To post to this group, send email to
> [email protected].
> > > > > To unsubscribe from this group, send email to
> > > > > [email protected]<rhino-tools-dev%[email protected]>
> <rhino-tools-dev%[email protected]<rhino-tools-dev%[email protected]>
> >
> > > <rhino-tools-dev%2Bunsubscribe@ googlegroups.com>
> > > > > .
> > > > > For more options, visit this group at
> > > > >http://groups.google.com/group/rhino-tools-dev?hl=en.
> >
> > > --
> > > You received this message because you are subscribed to the Google
> Groups
> > > "Rhino Tools Dev" group.
> > > To post to this group, send email to [email protected].
> > > To unsubscribe from this group, send email to
> > > [email protected]<rhino-tools-dev%[email protected]>
> <rhino-tools-dev%[email protected]<rhino-tools-dev%[email protected]>
> >
> > > .
> > > For more options, visit this group at
> > >http://groups.google.com/group/rhino-tools-dev?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Rhino Tools Dev" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<rhino-tools-dev%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/rhino-tools-dev?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Rhino Tools Dev" 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/rhino-tools-dev?hl=en.

Reply via email to