public static DatabaseEngine GetNewDatabaseEngine(string databasename)
        {
            lock (LockedObject)
            {
                DatabaseEngine         engine     = null;
                EnumDatabaseEngineType enginetype = GetDatabaseEngineType(databasename);
                switch (enginetype)
                {
                case EnumDatabaseEngineType.Sql2005: engine = new Sql2005DatabaseEngine(); break;

                case EnumDatabaseEngineType.Sql2008: engine = new Sql2008DatabaseEngine(); break;

                case EnumDatabaseEngineType.Sql2012: engine = new Sql2012DatabaseEngine(); break;

                case EnumDatabaseEngineType.SQLite: engine = new SQLiteDatabaseEngine(); break;

                case EnumDatabaseEngineType.Oracle: engine = new OracleDatabaseEngine(); break;

                case EnumDatabaseEngineType.GenericDatabase: engine = new GenericDatabaseEngine(); break;
                }
                DatabaseSession session = new DatabaseSession(databasename);
                engine.DatabaseSession = session;

                return(engine);
            }
        }
        public static DatabaseEngine GetDatabaseEngine(string databasename = "")
        {
            lock (LockedObject)
            {
                DatabaseSession session = null;
                if (string.IsNullOrWhiteSpace(databasename))
                {
                    session = DatabaseScopeManager.Instance.GetCurrentDatabaseSession();
                }
                else
                {
                    session = DatabaseScopeManager.Instance.GetCurrentDatabaseSession(databasename);
                }
                DatabaseEngine         engine     = null;
                EnumDatabaseEngineType enginetype = GetDatabaseEngineType(session != null ? session.DatabaseName : databasename);
                switch (enginetype)
                {
                case EnumDatabaseEngineType.Sql2005: engine = new Sql2005DatabaseEngine(); break;

                case EnumDatabaseEngineType.Sql2008: engine = new Sql2008DatabaseEngine(); break;

                case EnumDatabaseEngineType.Sql2012: engine = new Sql2012DatabaseEngine(); break;

                case EnumDatabaseEngineType.SQLite: engine = new SQLiteDatabaseEngine(); break;

                case EnumDatabaseEngineType.Oracle: engine = new OracleDatabaseEngine(); break;

                case EnumDatabaseEngineType.GenericDatabase: engine = new GenericDatabaseEngine(); break;
                }

                if (engine != null)
                {
                    if (session == null)
                    {
                        session = new DatabaseSession(databasename);
                    }
                    engine.DatabaseSession = session;
                }
                else
                {
                    throw new ObjectMappingException("not find database engine");
                }

                return(engine);
            }
        }
Ejemplo n.º 3
0
        public DatabaseSession CreateDatabaseSession(string databasename)
        {
            lock (LockedObject)
            {
                DatabaseSession newsession    = new DatabaseSession(databasename);
                Thread          curthread     = Thread.CurrentThread;
                ThreadManager   threadmanager = null;

                if (ThreadManagerDict.ContainsKey(curthread))
                {
                    threadmanager = ThreadManagerDict[curthread];
                }
                else
                {
                    threadmanager = new ThreadManager(curthread);
                    ThreadManagerDict.Add(curthread, threadmanager);
                }

                threadmanager.DatabaseSessionStack.Push(newsession);
                return(newsession);
            }
        }
Ejemplo n.º 4
0
        public DatabaseSession GetCurrentDatabaseSession(string databaseName)
        {
            lock (LockedObject)
            {
                ThreadManager threadmanager = CurrentThreadManager;
                if ((threadmanager != null) && (threadmanager.DatabaseSessionStack.Count > 0))
                {
                    DatabaseSession databasesession = threadmanager.DatabaseSessionStack.Peek();
                    if (databasesession.DatabaseName == databaseName)
                    {
                        return(databasesession);
                    }

                    //for(int i = threadmanager.DatabaseSessionStack.Count - 1; i >= 0; i --)
                    //{
                    //    DatabaseSession databasesession = threadmanager.DatabaseSessionStack.ElementAt(i);
                    //    if (databasesession.DatabaseName == databaseName)
                    //        return databasesession;
                    //}
                }
                return(null);
            }
        }
Ejemplo n.º 5
0
        public DatabaseSession RemoveCurrentDatabaseSession()
        {
            lock (LockedObject)
            {
                DatabaseSession databasesession = null;

                ThreadManager threadmanager = CurrentThreadManager;
                if (threadmanager != null)
                {
                    if (threadmanager.DatabaseSessionStack.Count > 0)
                    {
                        databasesession = threadmanager.DatabaseSessionStack.Pop();
                    }

                    if (threadmanager.DatabaseSessionStack.Count == 0)
                    {
                        ThreadManagerDict.Remove(threadmanager.Thread);
                    }
                }

                return(databasesession);
            }
        }