Ejemplo n.º 1
0
        public void DetachDB(string alias)
        {
            if (String.IsNullOrEmpty(alias))
            {
                throw new ArgumentException("alias can't be null or empty", "alias");
            }

            ExternalDatastore exDS = null;

            var attachedDataStores = AttachedDataStores;

            foreach (var ds in attachedDataStores)
            {
                if (ds.Alias == alias)
                {
                    exDS = ds;
                    break;
                }
            }

            if (exDS != null)
            {
                attachedDataStores.Remove(exDS);
                DetachDBInternal(exDS);
            }
        }
Ejemplo n.º 2
0
        public void AttachDB(string dbPath, string alias)
        {
            if (dbPath == null)
            {
                throw new ArgumentNullException("dbPath");
            }
            if (String.IsNullOrEmpty(alias))
            {
                throw new ArgumentException("alias can't be null or empty", "alias");
            }

            var externalDS = new ExternalDatastore()
            {
                DbPath = dbPath,
                Alias  = alias
            };

            AttachedDataStores.Add(externalDS);
            var conn = PersistentConnection;

            lock (PersistentConnectionSyncLock)
            {
                AttachDBInternal(conn, externalDS);
            }
        }
Ejemplo n.º 3
0
 //TODO test
 protected void AttachDBInternal(DbConnection connection, ExternalDatastore externalDB)
 {
     if (connection != null)
     {
         var commandText = "ATTACH DATABASE \"" + externalDB.DbPath + "\" AS " + externalDB.Alias + ";";
         try
         {
             connection.ExecuteNonQuery(commandText, (object[])null, CurrentTransaction);
         }
         catch (Exception e)
         {
             throw ExceptionProcessor.ProcessException(e, connection, commandText, CurrentTransaction);
         }
     }
 }
Ejemplo n.º 4
0
 //TODO test
 protected void DetachDBInternal(ExternalDatastore externalDB)
 {
     lock (PersistentConnectionSyncLock)
     {
         var connection = PersistentConnection;
         if (connection != null)
         {
             var commandText = "DETACH DATABASE \"" + externalDB.Alias + "\";";
             try
             {
                 connection.ExecuteNonQuery(commandText, (object[])null, CurrentTransaction);
             }
             catch (Exception e)
             {
                 throw ExceptionProcessor.ProcessException(e, connection, commandText, CurrentTransaction);
             }
         }
     }
 }
Ejemplo n.º 5
0
        public void AttachDB(Datastore dataStore, string alias)
        {
            if (dataStore == null)
            {
                throw new ArgumentNullException("dataStore");
            }
            if (String.IsNullOrEmpty(alias))
            {
                throw new ArgumentException("alias can't be null or empty", "alias");
            }

            var externalDS = new ExternalDatastore()
            {
                DS    = dataStore,
                Alias = alias
            };

            AttachedDataStores.Add(externalDS);
            var conn = PersistentConnection;

            AttachDBInternal(conn, externalDS);
        }
Ejemplo n.º 6
0
 protected void DetachDBInternal(ExternalDatastore externalDB)
 {
     lock (_persistentConnectionSyncLock)
     {
         var conn = PersistentConnection;
         if (conn != null)
         {
             this.ExecuteSQL("DETACH DATABASE \""
                 + externalDB.Alias + "\";", conn);
         }
     }
 }
Ejemplo n.º 7
0
        //public int ExecuteMultiDB(String command, params object[] parameters)
        //{
        //    using (DbCommand com = Provider.CreateCommand(command))
        //    {
        //        return this.ExecuteMultiDB(com, parameters);
        //    }
        //}

        //public int ExecuteMultiDB(String command, IEnumerable<KeyValuePair<String, object>> parameters)
        //{
        //    using (DbCommand comm = Provider.CreateCommand(command))
        //    {
        //        if (parameters != null)
        //        {
        //            foreach (var pair in parameters)
        //            {
        //                var param = Provider.CreateParameter(pair.Key, pair.Value);
        //                comm.Parameters.Add(param);
        //            }
        //        }
        //        return ExecuteSQLMultiDB(comm);
        //    }
        //}

        //protected int ExecuteMultiDB(DbCommand command, params object[] parameters)
        //{
        //    if (parameters != null)
        //    {
        //        foreach (object p in parameters)
        //        {
        //            command.Parameters.Add(Provider.CreateParameter(null, p));
        //        }
        //    }
        //    return ExecuteSQLMultiDB(command);
        //}

        //protected int ExecuteSQLMultiDB(DbCommand command)
        //{
        //    lock (_persistentConnectionSyncLock)
        //    {
        //        DbConnection conn = OpenMultiDBConnection();
        //        try
        //        {
        //            return ExecuteSQL(command, conn);
        //        }
        //        finally
        //        {
        //            ReleaseMultiDBConnection();
        //        }
        //    }
        //}

        //public object ExecuteScalarMultiDB(string query, params object[] parameters)
        //{
        //    using (DbCommand comm = Provider.CreateCommand(query))
        //    {
        //        if (parameters != null)
        //        {
        //            foreach (object val in parameters)
        //            {
        //                comm.Parameters.Add(Provider.CreateParameter(null, val));
        //            }
        //        }
        //        object value = ExecuteScalarMultiDB(comm);
        //        return (value is DBNull) ? null : value;
        //    }
        //}

        //protected object ExecuteScalarMultiDB(DbCommand command)
        //{
        //    lock (_multiDBpersistentConnectionSyncLock)
        //    {
        //        DbConnection conn = OpenMultiDBConnection();
        //        try
        //        {
        //            return ExecuteScalarMultiDB(command, conn);
        //        }
        //        finally
        //        {
        //            ReleaseMultiDBConnection();
        //        }
        //    }
        //}

        //protected object ExecuteScalarMultiDB(DbCommand command, DbConnection conn)
        //{
        //    try
        //    {
        //        command.Connection = conn;
        //        return command.ExecuteScalar();
        //    }
        //    catch (Exception e)
        //    {
        //        throw this.ThrowExceptionHelper(conn, command, e);
        //    }
        //}

        //public T ExecuteScalarMultiDB<T>(String query)
        //{
        //    return ExecuteScalar<T>(query, (object[])null);
        //}

        //public T ExecuteScalarMultiDB<T>(String query, params object[] parameters)
        //{
        //    using (DbCommand comm = Provider.CreateCommand(query))
        //    {
        //        if (parameters != null)
        //        {
        //            foreach (object val in parameters)
        //            {
        //                comm.Parameters.Add(Provider.CreateParameter(null, val));
        //            }
        //        }
        //        return ExecuteScalarMultiDB<T>(comm);
        //    }
        //}

        //public T ExecuteScalarMultiDB<T>(String query, IEnumerable<KeyValuePair<String, object>> parameters)
        //{
        //    using (DbCommand comm = Provider.CreateCommand(query))
        //    {
        //        if (parameters != null)
        //        {
        //            foreach (var pair in parameters)
        //            {
        //                var param = Provider.CreateParameter(pair.Key, pair.Value);
        //                comm.Parameters.Add(param);
        //            }
        //        }
        //        return ExecuteScalarMultiDB<T>(comm);
        //    }
        //}

        //protected T ExecuteScalarMultiDB<T>(DbCommand command)
        //{
        //    DbConnection conn = OpenMultiDBConnection();
        //    try
        //    {
        //        return this.ExecuteScalarMultiDB<T>(command, conn);
        //    }
        //    finally
        //    {
        //        ReleaseMultiDBConnection();
        //    }
        //}

        //protected T ExecuteScalarMultiDB<T>(DbCommand command, DbConnection conn)
        //{
        //    object result = ExecuteScalarMultiDB(command, conn);
        //    if (result is DBNull)
        //    {
        //        return default(T);
        //    }
        //    else if (result is T)
        //    {
        //        return (T)result;
        //    }
        //    else
        //    {
        //        Type t = typeof(T);
        //        if (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(Nullable<>))
        //        {
        //            t = Nullable.GetUnderlyingType(t);
        //        }

        //        return (T)Convert.ChangeType(result, t
        //            , System.Globalization.CultureInfo.CurrentCulture);
        //        //return (T)Convert.ChangeType(result, typeof(T));
        //    }
        //}

        #endregion multiDB execute commands

        #region Attach/Detach

        public void AttachDB(DatastoreRedux dataStore, string alias)
        {
            if (dataStore == null) { throw new ArgumentNullException("dataStore"); }
            if (String.IsNullOrEmpty(alias)) { throw new ArgumentException("alias can't be null or empty", "alias"); }
            Debug.Assert(_attachedDataStores != null);

            var externalDS = new ExternalDatastore()

            {
                DS = dataStore,
                Alias = alias
            };

            _attachedDataStores.Add(externalDS);
            AttachDBInternal(externalDS);
        }