Hi Humberto!
Thanks for the help. Can you elaborate more on what you mean by:
> You will have to modify the Rhino.Commons source code to share the
> unitofwork.cerrentsession.
>
I think my facility and resolver are pretty much the same as the one you've
got (except in vb :) )
and i'm getting the error "You are not in a unit of work"
in the NHibernateUnitOfWorkFactory.cs here:
public ISession CurrentSession
{
get
{
ISession session =
(ISession)Local.Data[CurrentNHibernateSessionKey];
if (session == null)
* throw new InvalidOperationException("You are not in a
unit of work");*
return session;
}
set { Local.Data[CurrentNHibernateSessionKey] = value; }
}
i'm guessing this has to do with the sharing... i don't know
It would be AMAZING if someone who has a working solution could post the
barest of barebones working console app w/ the newest versions of
everything.
Thanks again!
On Wed, Mar 17, 2010 at 4:09 PM, Patricia Vandermeer <
[email protected]> wrote:
> Thanks Humberto! I will try to fix mine when i get back from my vacation
> :)
>
> On Wed, Mar 17, 2010 at 3:51 PM, Humberto Franco <[email protected]
> > wrote:
>
>> 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]<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.