/// <summary>
        /// Used Internally to merge parameters returned by the provider back into the original collection.
        /// </summary>
        /// <param name="parms"></param>
        internal void Merge(esParameters parms)
        {
            foreach (esParameter esParam in parms)
            {
                esParameter esOriginalParam = this.hash[esParam.Name];

                esOriginalParam.Value = esParam.Value;
            }
        }
        /// <summary>
        /// Use this method to fetch a given esParameter by name. There should be no prefix such as @, ? or : in the name.
        /// </summary>
        /// <param name="name">The name of the parameter without a prefix, for example, "EmployeeID" not "@EmployeeID".</param>
        /// <returns>The desired parameter or null/Nothing if not found</returns>
        public esParameter this[string name]
        {
            get
            {
                esParameter param = null;

                if (this.hash.ContainsKey(name))
                {
                    param = this.hash[name];
                }

                return(param);
            }
        }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="parameter">An already created esParameter. This is mostly used internally.</param>
 /// <returns>The same parameter passed in</returns>
 public esParameter Add(esParameter parameter)
 {
     this.parameters.Add(parameter);
     this.hash[parameter.Name] = parameter;
     return parameter;
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="parameter">An already created esParameter. This is mostly used internally.</param>
 /// <returns>The same parameter passed in</returns>
 public esParameter Add(esParameter parameter)
 {
     this.parameters.Add(parameter);
     this.hash[parameter.Name] = parameter;
     return(parameter);
 }
        //public int TestAssignPrimaryKeys()
        //{
        //    this.AssignPrimaryKeys();
        //    return this.Table.PrimaryKey.Length;
        //}

        //public int TestRemovePrimaryKeys()
        //{
        //    this.RemovePrimaryKeys();
        //    return this.Table.PrimaryKey.Length;
        //}

		public void TestParamsWithScale()
		{
			esParameter myParam = new esParameter("Salary", 12.34);
			myParam.DbType = DbType.Decimal;
			myParam.Precision = 18;
			myParam.Scale = 2;
			myParam.Direction = esParameterDirection.InputOutput;

			esParameters parms = new esParameters();
			parms.Add(myParam);
			parms.Add("DepartmentID", 1);
            //parms.Add("DepartmentID", null);
            parms.Add("FirstName", "Entity");
			parms.Add("LastName", "Spaces");
			parms.Add("Age", 100);
			parms.Add("HireDate", "2000-12-31 00:00:00");
			parms.Add("IsActive", false);
			this.ExecuteNonQuery(esQueryType.StoredProcedure, "proc_esTestInsert", parms);
		}