/// <summary>
        /// Creates the current UoW. The method will only
        /// create a new UoW if one is not already active. 
        /// Otherwise the existing UoW is returned
        /// </summary>
        /// <returns>The current IUnitOfWork</returns>
        public static IUnitOfWork CreateUnitOfWork()
        {
            UnitOfWork uow = GetCurrentUnitOfWork() as UnitOfWork;

            if (null == uow || !uow.IsActive)
            {
                uow = new UnitOfWork(m_sessionFactory.OpenSession());
                uow.Begin();
                Storage.SetCurrentUnitOfWork(uow);
            }

            return uow;
        }
        public void Setup()
        {
            FluentConfiguration configuration = Fluently.Configure()
                .Database(SQLiteConfiguration.Standard
                    .InMemory()
                    .ProxyFactoryFactory("NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu")
                    .ShowSql());

            PersistenceModel pm = new PersistenceModel();
            pm.AddMappingsFromAssembly(typeof(Artist).Assembly);

            SingleConnectionSessionSourceForSQLiteInMemoryTesting ss = new SingleConnectionSessionSourceForSQLiteInMemoryTesting(configuration.BuildConfiguration().Properties, pm);
            ss.BuildSchema();

            Session = ss.CreateSession();
            m_uow = new UnitOfWork(Session);

            SetupContext(Session);
            m_uow.Commit();

            Session.Clear();
        }