This isn't threadsafe:

 public ISessionFactory SessionFactory
       {
           get { return this.sessionFactory ?? (this.sessionFactory =
this.ConfigurationGenerator.Generate().BuildSessionFactory()); }
       }

I suggest you take a look at how sharp architecture does it:
http://github.com/paulbatum/Sharp-Architecture/blob/master/src/SharpArch/SharpArch.Data/NHibernate/NHibernateInitializer.cs


On Wed, Feb 17, 2010 at 8:03 PM, Schlaefisch <schlaefi...@googlemail.com>wrote:

> We have a WebSessionManager implemented as singleton which creates the
> sessionfactory, using fluent configuration, as needed.
>
> Here is the relevant code:
>
>    public class WebSessionManager : ISessionManager
>    {
>        private static WebSessionManager sessionManager;
>        private ISessionFactory sessionFactory;
>        private IConfigurationGenerator configurationGenerator;
>
>        public static WebSessionManager Instance
>        {
>            get { return sessionManager ?? (sessionManager = new
> WebSessionManager()); }
>        }
>        public ISession Session
>        {
>            get
>            {
>                if (!
> ManagedWebSessionContext.HasBind(HttpContext.Current,
> this.SessionFactory))
>                {
>                    ManagedWebSessionContext.Bind(HttpContext.Current,
> this.SessionFactory.OpenSession());
>                }
>                return
> this.SessionFactory.GetCurrentSession();
>            }
>        }
>        public ISessionFactory SessionFactory
>        {
>            get { return this.sessionFactory ?? (this.sessionFactory =
> this.ConfigurationGenerator.Generate().BuildSessionFactory()); }
>        }
>    }
>
>    public class ConfigurationGenerator : IConfigurationGenerator
>    {
>        private readonly string connectionString;
>        private readonly string sessionContext; // Here: "managed_web"
>
>        public FluentConfiguration Generate()
>        {
>              FluentConfiguration config = Fluently.Configure()
>
> .Database(MsSqlConfiguration.MsSql2005.ConnectionString(this.connectionString)
>                     .ShowSql().CurrentSessionContext(this.sessionContext))
>                     .Mappings(m =>
> m.FluentMappings.AddFromAssemblyOf<IConfigurationGenerator>());
>            return config;
>         }
>     }
>
>
> On Feb 16, 4:58 pm, James Gregory <jagregory....@gmail.com> wrote:
> > Where and how are you creating your session factory?
> >
> > On Tue, Feb 16, 2010 at 3:06 PM, Schlaefisch <schlaefi...@googlemail.com
> >wrote:
> >
> > > Hi,
> >
> > > we're using fluent NHibernate within a SharePoint 2007 WebPart.
> > > Everything works fine except for one problem:
> >
> > > If we reset the web server and 2 (or more) users try to browse the
> > > WebPart, the session factory is created twice at the same time,
> > > resulting in a null reference exception.
> >
> > > Is there any standard approach to prevent this?
> >
> > > --
> > > You received this message because you are subscribed to the Google
> Groups
> > > "Fluent NHibernate" group.
> > > To post to this group, send email to
> fluent-nhibern...@googlegroups.com.
> > > To unsubscribe from this group, send email to
> > > fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com>
> <fluent-nhibernate%2bunsubscr...@googlegroups.com<fluent-nhibernate%252bunsubscr...@googlegroups.com>
> >
> > > .
> > > For more options, visit this group at
> > >http://groups.google.com/group/fluent-nhibernate?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Fluent NHibernate" group.
> To post to this group, send email to fluent-nhibern...@googlegroups.com.
> To unsubscribe from this group, send email to
> fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/fluent-nhibernate?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Fluent NHibernate" group.
To post to this group, send email to fluent-nhibern...@googlegroups.com.
To unsubscribe from this group, send email to 
fluent-nhibernate+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/fluent-nhibernate?hl=en.

Reply via email to