Hi,

I had a quick look at this. It all seems very complicated and my
requirement may be different to what you refer to. Sorry if I am not
clear enough. Looking for example at:

NHibernateSession.IsConfiguredForMultipleDatabases

My web applications has a few sets of pages. Each set manipulates a
different database so needs to run (?) NHibernate separately - i.e.
having its own instance - hope that's the right terminology.

In the past I have used EF and/or plain old ADO.NET/C# to achieve
this. It was just a question of defining several connection strings.
This should be possible as well or can I only run one 'instance' ???
of NHibernate to access several databases.

Thanks.

Best wishes,

Christian


On Jan 19, 7:28 pm, devonl <[email protected]> wrote:
> Essentially, you'll need to set up a collection in the web application
> that stores each configured session for NH. Then you'll instantiate a
> session for each database. Check out S#arp Archtiecture for a nice way
> to accomplish this. IN Billy's example, he uses a Dictionary of
> strings and ISession objects, then grabs the appropriate session
> object based on the key:
>
> http://github.com/codai/Sharp-Architecture/tree/master/src/SharpArch/...
>
> hth,
>
> -devon
>
> On Jan 19, 8:13 am, csetzkorn <[email protected]> wrote:
>
> > Dear all,
>
> > I am a bit stuck and would like some help please.
>
> > I am using DAOs in a web application (ASP.NET MVC within controllers)
> > served by two dao factories which access two separate databases.
>
> > The DAOs use this class:
>
> > public class NHibernateHelper
> >     {
> >         private static ISessionFactory sessionFactory;
>
> >         public static ISessionFactory SessionFactory
> >         {
> >             get
> >             {
> >                 if (sessionFactory == null)
> >                 {
> >                     sessionFactory = new Configuration().Configure
> > ().AddAssembly("Bla").BuildSessionFactory();
> >                 }
> >                 return sessionFactory;
> >             }
> >         }
>
> >         public static ISession OpenSession()
> >         {
> >             return SessionFactory.OpenSession();
> >         }
>
> >         public static ISession GetCurrentSession()
> >         {
> >             if (!CurrentSessionContext.HasBind(SessionFactory))
> >             {
> >                 CurrentSessionContext.Bind(SessionFactory.OpenSession
> > ());
> >             }
> >             return SessionFactory.GetCurrentSession();
> >         }
>
> >         public static void DisposeSession()
> >         {
> >             var session = GetCurrentSession();
> >             session.Close();
> >             session.Dispose();
> >         }
>
> >         public static void BeginTransaction()
> >         {
> >             GetCurrentSession().BeginTransaction();
> >         }
>
> >         public static void CommitTransaction()
> >         {
> >             var session = GetCurrentSession();
> >             if (session.Transaction.IsActive)
> >                 session.Transaction.Commit();
> >         }
>
> >         public static void RollbackTransaction()
> >         {
> >             var session = GetCurrentSession();
> >             if (session.Transaction.IsActive)
> >                 session.Transaction.Rollback();
> >         }
> >     }
>
> > This is all no problem if I only use one database as I can just define
> > one hibernate-configuration section in my Web.config. I am just
> > wondering what I can do to define the connection strings for two or
> > more databases. I could use something like this when the singleton
> > sessionFactory is accessed:
>
> > SessionFactory sf = new Configuration()
> > .Configure("/path/to/config.cfg.xml")
> > .BuildSessionFactory();
>
> > or this:
>
> > cfg.SetProperty("connection.connection_string",
> > get_connection_string_from_other_web_config);
> > cfg.BuildSessionFactory();
>
> > However, this seems all a bit 'dirty' (I did not try it yet as well).
> > I would also like to use my DAO classes etc. in other applications
> > (e.g. console application). Any feedback would be very much
> > appreciated. Many thanks in advance.
>
> > Best wishes,
>
> > Christian
-- 
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.


Reply via email to