//===============================================================================
        // Microsoft patterns & practices Enterprise Library
        // Data Access Application Block
        //===============================================================================
        // Copyright © Microsoft Corporation.  All rights reserved.
        // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY
        // OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
        // LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
        // FITNESS FOR A PARTICULAR PURPOSE.
        //===============================================================================
        //
        // Forked From Enterprise Library licensed under Ms-Pl http://www.codeplex.com/entlib
        // but implementing a sub set of the API from the 2.0 Application Blocks SqlHelper
        // using implementation from the newer Ms-Pl version
        // Modifications by Joe Audette
        // Last Modified 2010-01-28

        public SqlParameter[] GetParameters(string connectionString, string procName)
        {
            if (string.IsNullOrEmpty(connectionString))
            {
                throw new ArgumentNullException("connectionString");
            }
            if (string.IsNullOrEmpty(procName))
            {
                throw new ArgumentNullException("Procedure Name");
            }


            if (AlreadyCached(connectionString, procName))
            {
                return(GetParametersFromCache(connectionString, procName));
            }
            else
            {
                SqlParameter[] copyOfParameters = DiscoverParameters(connectionString, procName);

                //this.cache.AddParameterSetToCache(connectionString, procName, copyOfParameters);
                SqlParameterCache.AddParameterSetToCache(connectionString, procName, copyOfParameters);

                return(GetParametersFromCache(connectionString, procName));
            }
        }
        private static SqlParameter[] CreateParameterCopy(DbCommand command)
        {
            IDataParameterCollection parameters = command.Parameters;

            SqlParameter[] parameterArray = new SqlParameter[parameters.Count];
            parameters.CopyTo(parameterArray, 0);

            return(SqlParameterCache.CloneParameters(parameterArray));
        }
 private bool AlreadyCached(string connectionString, string procName)
 {
     return(SqlParameterCache.IsParameterSetCached(connectionString, procName));
 }
 protected SqlParameter[] GetParametersFromCache(string connectionString, string procName)
 {
     return(SqlParameterCache.GetCachedParameterSet(connectionString, procName));
 }