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); } }
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); } }
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); } }
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); } }