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.
