Hello JbM: This JIRA has applied, so if you work with the trunk version you will see another overload method of GetSession, wich accept an string (this is the GetSessionByName).
https://nhibernate.svn.sourceforge.net/svnroot/nhcontrib/trunk/src/NHibernate.Burrow/ Respect to the issue you mentioned, I believe the problem is elsewhere becouse the only responsability of this method is bring a ISession. But you can try with the trunk Oscar 2009/1/27 JbM <[email protected]> > > Oscar > > Thanks a lot for your posts. I use your method BurrowFramework > ().GetSessionByName(string PersitenceName); > > But It does'nt work if the Session is directly called by Hibernate (i > think) and if the Entity is not a NHibernateProxy. > > In fact, i have an exception in SessionImpl.cs in the method : public > object GetIdentifier(object obj) > > (...) > if (obj is INHibernateProxy) > { > ILazyInitializer li = ((INHibernateProxy) > obj).HibernateLazyInitializer; > if (li.Session != this) > { > throw new TransientObjectException("The proxy was not > associated > with this session"); > } > return li.Identifier; > } > else > { > EntityEntry entry = persistenceContext.GetEntry(obj); //HERE IS THE > PROBLEM : not the good persistenceContext ?? > if (entry == null) //entry is not find :( > { > throw new TransientObjectException("the instance was not > associated > with this session"); > } > return entry.Id; > } > (...) > > I don't know how resolve this problem :( > > JbM > > On 26 déc 2008, 23:30, "Oscar Orduz Acosta" <[email protected]> wrote: > > You're welcome Manu, > > > > BTW: The JIRA ticked has been submited. > > > > Oscar > > > > 2008/12/24 Manu <[email protected]> > > > > > > > > > > > > > Oscar, > > > > > Sorry for the late reply. I had been very busy with some deadlines... > > > > > Thank you very much for your code. You have saved me a lot of time. It > > > is exactly what I need! > > > > > On 19 dic, 23:00, "Oscar Orduz Acosta" <[email protected]> wrote: > > > > Hello Manu: > > > > > > I had similar experience, what I needed were have the same entities > but > > > in > > > > different databases (even in different Engines i.e Oracle, MsSQl, > etc), > > > so > > > > we can support almost transparently several client implementations in > > > > Database but with the same design. > > > > > > I have to custom the code of Burrow in the following files: > > > > > > BurrowFramework.cs: > > > > /// <summary> > > > > /// Numero método incluido para Framework > > > > /// </summary> > > > > /// <param name="configurationId"></param> > > > > /// <returns></returns> > > > > public ISessionFactory GetSessionFactoryByName(string > > > > configurationId) > > > > { > > > > if (PersistenceUnitRepo.Instance == null) > > > > > > PersistenceUnitRepo.Initialize(BurrowEnvironment.Configuration); > > > > return > > > > > PersistenceUnitRepo.Instance.GetPUByName(configurationId).SessionFactory; > > > > } > > > > /// <summary> > > > > /// Oscar Orduz. > > > > /// </summary> > > > > /// <param name="configurationId"></param> > > > > /// <returns></returns> > > > > public ISession GetSessionByName(string configurationId) > > > > { > > > > AbstractConversation c = > > > > ((AbstractConversation)CurrentConversation); > > > > return c.GetSessionByName(configurationId); > > > > } > > > > > > AbstractConversation.cs > > > > > > /// <summary> > > > > /// Oscar Orduz > > > > /// </summary> > > > > /// <param name="configurationId"></param> > > > > /// <returns></returns> > > > > public ISession GetSessionByName(string configurationId) > > > > { > > > > SessionManager sm = string.IsNullOrEmpty(configurationId) > ? > > > > GetSessionManager() : GetSessionManagerByName(configurationId); > > > > return GetSession(sm); > > > > } > > > > /// <summary> > > > > /// Método creado para el manejo de la sesión para el > framework > > > de > > > > PS > > > > /// </summary> > > > > /// <param name="configurationId"></param> > > > > /// <returns></returns> > > > > internal SessionManager GetSessionManagerByName(string > > > > configurationId) > > > > { > > > > return > > > > > sessManagers[PersistenceUnitRepo.Instance.GetPUByName(configurationId)]; > > > > } > > > > > > PersistenceUnitRepo.cs > > > > /// <summary> > > > > /// Método creado para la recuperación por nombre > > > > /// </summary> > > > > /// <param name="configurationId"></param> > > > > /// <returns></returns> > > > > public PersistenceUnit GetPUByName(string configurationId) > > > > { > > > > if (PersistenceUnits.Count == 1) > > > > { > > > > return PersistenceUnits[0]; > > > > } > > > > foreach (PersistenceUnit pu in persistenceUnits) > > > > { > > > > if (pu.Name == configurationId) > > > > { > > > > return pu; > > > > } > > > > } > > > > > > throw new GeneralException("Persistence Unit cannot be > found > > > for > > > > " + configurationId); > > > > } > > > > > > I have mantained this code for three releases of burrow and until now > it > > > > works fine > > > > > > Hope this help. > > > > > > Oscar > > > > > > 2008/12/18 Manu <[email protected]> > > > > > > > I have been looking at the Burrow source code and I'm not sure if I > > > > > can use its GenericDAO to handle multiple databases the way I want. > > > > > > > I have see that the Session property of the GenericDAO class calls > > > > > BurrowFramework().GetSession(_NHEntityType) and that works good if > the > > > > > multiples databases you're working with have different entities. > > > > > However, it can't handle multiple databases with the same mapped > > > > > entities as the GetSession method always returns the first > > > > > PersistenceUnit. So I think GenericDAO needs an overload to specify > a > > > > > session factory name to retrieve the proper PersistenceUnit by name > > > > > instead of by type. > > > > > > > As I have started today to look at Burrow I may be wrong, so if > anyone > > > > > is familiar with it I'd appreciate if he can show some light about > > > > > that problem.- Ocultar texto de la cita - > > > > > > - Mostrar texto de la cita -- Masquer le texte des messages > précédents - > > > > - Afficher le texte des messages précédents - > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "nhusers" 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/nhusers?hl=en -~----------~----~----~----~------~----~------~--~---
