GetCommandWrapper() public static method

Gets the command wrapper for a dynamically generated query and optionally includes server-side paging.
public static GetCommandWrapper ( Microsoft.Practices.EnterpriseLibrary.Data.Database database, String commandName, Type columnEnum, SqlFilterParameterCollection parameters, String orderBy, int start, int pageLength ) : DbCommand
database Microsoft.Practices.EnterpriseLibrary.Data.Database
commandName String
columnEnum System.Type
parameters SqlFilterParameterCollection
orderBy String
start int
pageLength int
return System.Data.Common.DbCommand
Esempio n. 1
0
        /// <summary>
        ///     Gets rows from the datasource based on the PK_Cart index.
        /// </summary>
        /// <param name="transactionManager"><see cref="TransactionManager"/> object</param>
        /// <param name="_cartId"></param>
        /// <param name="start">Row number at which to start reading.</param>
        /// <param name="pageLength">Number of rows to return.</param>
        /// <param name="count">out parameter to get total records for query.</param>
        /// <returns>Returns an instance of the <see cref="PetShop.Business.Cart"/> class.</returns>
        /// <remarks></remarks>
        /// <exception cref="System.Exception">The command could not be executed.</exception>
        /// <exception cref="System.Data.DataException">The <paramref name="transactionManager"/> is not open.</exception>
        /// <exception cref="System.Data.Common.DbException">The command could not be executed.</exception>
        public override PetShop.Business.Cart GetByCartId(TransactionManager transactionManager, int _cartId, int start, int pageLength, out int count)
        {
            SqlDatabase database       = new SqlDatabase(this._connectionString);
            DbCommand   commandWrapper = StoredProcedureProvider.GetCommandWrapper(database, "dbo.Cart_GetByCartId", _useStoredProcedure);

            database.AddInParameter(commandWrapper, "@CartId", DbType.Int32, _cartId);

            IDataReader  reader = null;
            TList <Cart> tmp    = new TList <Cart>();

            try
            {
                //Provider Data Requesting Command Event
                OnDataRequesting(new CommandEventArgs(commandWrapper, "GetByCartId", tmp));

                if (transactionManager != null)
                {
                    reader = Utility.ExecuteReader(transactionManager, commandWrapper);
                }
                else
                {
                    reader = Utility.ExecuteReader(database, commandWrapper);
                }

                //Create collection and fill
                Fill(reader, tmp, start, pageLength);
                count = -1;
                if (reader.NextResult())
                {
                    if (reader.Read())
                    {
                        count = reader.GetInt32(0);
                    }
                }

                //Provider Data Requested Command Event
                OnDataRequested(new CommandEventArgs(commandWrapper, "GetByCartId", tmp));
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                }

                commandWrapper = null;
            }

            if (tmp.Count == 1)
            {
                return(tmp[0]);
            }
            else if (tmp.Count == 0)
            {
                return(null);
            }
            else
            {
                throw new DataException("Cannot find the unique instance of the class.");
            }

            //return rows;
        }
Esempio n. 2
0
        }        //end getall

        #endregion

        #region GetPaged Methods

        /// <summary>
        /// Gets a page of rows from the DataSource.
        /// </summary>
        /// <param name="start">Row number at which to start reading.</param>
        /// <param name="pageLength">Number of rows to return.</param>
        /// <param name="count">Number of rows in the DataSource.</param>
        /// <param name="whereClause">Specifies the condition for the rows returned by a query (Name='John Doe', Name='John Doe' AND Id='1', Name='John Doe' OR Id='1').</param>
        /// <param name="orderBy">Specifies the sort criteria for the rows in the DataSource (Name ASC; BirthDay DESC, Name ASC);</param>
        /// <param name="transactionManager"><see cref="TransactionManager"/> object</param>
        /// <remarks></remarks>
        /// <returns>Returns a typed collection of PetShop.Business.Cart objects.</returns>
        public override TList <Cart> GetPaged(TransactionManager transactionManager, string whereClause, string orderBy, int start, int pageLength, out int count)
        {
            SqlDatabase database       = new SqlDatabase(this._connectionString);
            DbCommand   commandWrapper = StoredProcedureProvider.GetCommandWrapper(database, "dbo.Cart_GetPaged", _useStoredProcedure);


            if (commandWrapper.CommandType == CommandType.Text &&
                commandWrapper.CommandText != null)
            {
                commandWrapper.CommandText = commandWrapper.CommandText.Replace(SqlUtil.PAGE_INDEX, string.Concat(SqlUtil.PAGE_INDEX, Guid.NewGuid().ToString("N").Substring(0, 8)));
            }

            database.AddInParameter(commandWrapper, "@WhereClause", DbType.String, whereClause);
            database.AddInParameter(commandWrapper, "@OrderBy", DbType.String, orderBy);
            database.AddInParameter(commandWrapper, "@PageIndex", DbType.Int32, start);
            database.AddInParameter(commandWrapper, "@PageSize", DbType.Int32, pageLength);

            IDataReader reader = null;
            //Create Collection
            TList <Cart> rows = new TList <Cart>();

            try
            {
                //Provider Data Requesting Command Event
                OnDataRequesting(new CommandEventArgs(commandWrapper, "GetPaged", rows));

                if (transactionManager != null)
                {
                    reader = Utility.ExecuteReader(transactionManager, commandWrapper);
                }
                else
                {
                    reader = Utility.ExecuteReader(database, commandWrapper);
                }

                Fill(reader, rows, 0, int.MaxValue);
                count = rows.Count;

                if (reader.NextResult())
                {
                    if (reader.Read())
                    {
                        count = reader.GetInt32(0);
                    }
                }

                //Provider Data Requested Command Event
                OnDataRequested(new CommandEventArgs(commandWrapper, "GetPaged", rows));
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                }

                commandWrapper = null;
            }

            return(rows);
        }
Esempio n. 3
0
        }        //end Delete

        #endregion

        #region Find Functions

        #region Parsed Find Methods
        /// <summary>
        ///     Returns rows meeting the whereClause condition from the DataSource.
        /// </summary>
        /// <param name="transactionManager"><see cref="TransactionManager"/> object</param>
        /// <param name="whereClause">Specifies the condition for the rows returned by a query (Name='John Doe', Name='John Doe' AND Id='1', Name='John Doe' OR Id='1').</param>
        /// <param name="start">Row number at which to start reading.</param>
        /// <param name="pageLength">Number of rows to return.</param>
        /// <param name="count">out. The number of rows that match this query.</param>
        /// <remarks>Operators must be capitalized (OR, AND).</remarks>
        /// <returns>Returns a typed collection of PetShop.Business.Cart objects.</returns>
        public override TList <Cart> Find(TransactionManager transactionManager, string whereClause, int start, int pageLength, out int count)
        {
            count = -1;
            if (whereClause.IndexOf(";") > -1)
            {
                return(new TList <Cart>());
            }

            SqlDatabase database       = new SqlDatabase(this._connectionString);
            DbCommand   commandWrapper = StoredProcedureProvider.GetCommandWrapper(database, "dbo.Cart_Find", _useStoredProcedure);

            bool searchUsingOR = false;

            if (whereClause.IndexOf(" OR ") > 0)     // did they want to do "a=b OR c=d OR..."?
            {
                searchUsingOR = true;
            }

            database.AddInParameter(commandWrapper, "@SearchUsingOR", DbType.Boolean, searchUsingOR);

            database.AddInParameter(commandWrapper, "@CartId", DbType.Int32, DBNull.Value);
            database.AddInParameter(commandWrapper, "@UniqueId", DbType.Int32, DBNull.Value);
            database.AddInParameter(commandWrapper, "@ItemId", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@Name", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@Type", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@Price", DbType.Decimal, DBNull.Value);
            database.AddInParameter(commandWrapper, "@CategoryId", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@ProductId", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@IsShoppingCart", DbType.Boolean, DBNull.Value);
            database.AddInParameter(commandWrapper, "@Quantity", DbType.Int32, DBNull.Value);

            // replace all instances of 'AND' and 'OR' because we already set searchUsingOR
            whereClause = whereClause.Replace(" AND ", "|").Replace(" OR ", "|");
            string[] clauses = whereClause.ToLower().Split('|');

            // Here's what's going on below: Find a field, then to get the value we
            // drop the field name from the front, trim spaces, drop the '=' sign,
            // trim more spaces, and drop any outer single quotes.
            // Now handles the case when two fields start off the same way - like "Friendly='Yes' AND Friend='john'"

            char[] equalSign   = { '=' };
            char[] singleQuote = { '\'' };
            foreach (string clause in clauses)
            {
                if (clause.Trim().StartsWith("cartid ") || clause.Trim().StartsWith("cartid="))
                {
                    database.SetParameterValue(commandWrapper, "@CartId",
                                               clause.Trim().Remove(0, 6).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("uniqueid ") || clause.Trim().StartsWith("uniqueid="))
                {
                    database.SetParameterValue(commandWrapper, "@UniqueId",
                                               clause.Trim().Remove(0, 8).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("itemid ") || clause.Trim().StartsWith("itemid="))
                {
                    database.SetParameterValue(commandWrapper, "@ItemId",
                                               clause.Trim().Remove(0, 6).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("name ") || clause.Trim().StartsWith("name="))
                {
                    database.SetParameterValue(commandWrapper, "@Name",
                                               clause.Trim().Remove(0, 4).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("type ") || clause.Trim().StartsWith("type="))
                {
                    database.SetParameterValue(commandWrapper, "@Type",
                                               clause.Trim().Remove(0, 4).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("price ") || clause.Trim().StartsWith("price="))
                {
                    database.SetParameterValue(commandWrapper, "@Price",
                                               clause.Trim().Remove(0, 5).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("categoryid ") || clause.Trim().StartsWith("categoryid="))
                {
                    database.SetParameterValue(commandWrapper, "@CategoryId",
                                               clause.Trim().Remove(0, 10).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("productid ") || clause.Trim().StartsWith("productid="))
                {
                    database.SetParameterValue(commandWrapper, "@ProductId",
                                               clause.Trim().Remove(0, 9).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("isshoppingcart ") || clause.Trim().StartsWith("isshoppingcart="))
                {
                    database.SetParameterValue(commandWrapper, "@IsShoppingCart",
                                               clause.Trim().Remove(0, 14).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("quantity ") || clause.Trim().StartsWith("quantity="))
                {
                    database.SetParameterValue(commandWrapper, "@Quantity",
                                               clause.Trim().Remove(0, 8).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }

                throw new ArgumentException("Unable to use this part of the where clause in this version of Find: " + clause);
            }

            IDataReader reader = null;
            //Create Collection
            TList <Cart> rows = new TList <Cart>();


            try
            {
                //Provider Data Requesting Command Event
                OnDataRequesting(new CommandEventArgs(commandWrapper, "Find", rows));

                if (transactionManager != null)
                {
                    reader = Utility.ExecuteReader(transactionManager, commandWrapper);
                }
                else
                {
                    reader = Utility.ExecuteReader(database, commandWrapper);
                }

                Fill(reader, rows, start, pageLength);

                if (reader.NextResult())
                {
                    if (reader.Read())
                    {
                        count = reader.GetInt32(0);
                    }
                }

                //Provider Data Requested Command Event
                OnDataRequested(new CommandEventArgs(commandWrapper, "Find", rows));
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                }

                commandWrapper = null;
            }
            return(rows);
        }
Esempio n. 4
0
        /// <summary>
        ///     Returns rows from the DataSource that meet the parameter conditions.
        /// </summary>
        /// <param name="transactionManager"><see cref="TransactionManager"/> object</param>
        /// <param name="parameters">A collection of <see cref="SqlFilterParameter"/> objects.</param>
        /// <param name="orderBy">Specifies the sort criteria for the rows in the DataSource (Name ASC; BirthDay DESC, Name ASC);</param>
        /// <param name="start">Row number at which to start reading.</param>
        /// <param name="pageLength">Number of rows to return.</param>
        /// <param name="count">out. The number of rows that match this query.</param>
        /// <returns>Returns a typed collection of PetShop.Business.Cart objects.</returns>
        public override TList <Cart> Find(TransactionManager transactionManager, IFilterParameterCollection parameters, string orderBy, int start, int pageLength, out int count)
        {
            SqlFilterParameterCollection filter = null;

            if (parameters == null)
            {
                filter = new SqlFilterParameterCollection();
            }
            else
            {
                filter = parameters.GetParameters();
            }

            SqlDatabase database       = new SqlDatabase(this._connectionString);
            DbCommand   commandWrapper = StoredProcedureProvider.GetCommandWrapper(database, "dbo.Cart_Find_Dynamic", typeof(CartColumn), filter, orderBy, start, pageLength);

            SqlFilterParameter param;

            for (int i = 0; i < filter.Count; i++)
            {
                param = filter[i];
                database.AddInParameter(commandWrapper, param.Name, param.DbType, param.GetValue());
            }

            TList <Cart> rows   = new TList <Cart>();
            IDataReader  reader = null;

            try
            {
                //Provider Data Requesting Command Event
                OnDataRequesting(new CommandEventArgs(commandWrapper, "Find", rows));

                if (transactionManager != null)
                {
                    reader = Utility.ExecuteReader(transactionManager, commandWrapper);
                }
                else
                {
                    reader = Utility.ExecuteReader(database, commandWrapper);
                }

                Fill(reader, rows, 0, int.MaxValue);
                count = rows.Count;

                if (reader.NextResult())
                {
                    if (reader.Read())
                    {
                        count = reader.GetInt32(0);
                    }
                }

                //Provider Data Requested Command Event
                OnDataRequested(new CommandEventArgs(commandWrapper, "Find", rows));
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                }

                commandWrapper = null;
            }

            return(rows);
        }
Esempio n. 5
0
        }        //end Delete

        #endregion

        #region Find Functions

        #region Parsed Find Methods
        /// <summary>
        ///     Returns rows meeting the whereClause condition from the DataSource.
        /// </summary>
        /// <param name="transactionManager"><see cref="TransactionManager"/> object</param>
        /// <param name="whereClause">Specifies the condition for the rows returned by a query (Name='John Doe', Name='John Doe' AND Id='1', Name='John Doe' OR Id='1').</param>
        /// <param name="start">Row number at which to start reading.</param>
        /// <param name="pageLength">Number of rows to return.</param>
        /// <param name="count">out. The number of rows that match this query.</param>
        /// <remarks>Operators must be capitalized (OR, AND).</remarks>
        /// <returns>Returns a typed collection of PetShop.Business.Orders objects.</returns>
        public override TList <Orders> Find(TransactionManager transactionManager, string whereClause, int start, int pageLength, out int count)
        {
            count = -1;
            if (whereClause.IndexOf(";") > -1)
            {
                return(new TList <Orders>());
            }

            SqlDatabase database       = new SqlDatabase(this._connectionString);
            DbCommand   commandWrapper = StoredProcedureProvider.GetCommandWrapper(database, "dbo.Orders_Find", _useStoredProcedure);

            bool searchUsingOR = false;

            if (whereClause.IndexOf(" OR ") > 0)     // did they want to do "a=b OR c=d OR..."?
            {
                searchUsingOR = true;
            }

            database.AddInParameter(commandWrapper, "@SearchUsingOR", DbType.Boolean, searchUsingOR);

            database.AddInParameter(commandWrapper, "@OrderId", DbType.Int32, DBNull.Value);
            database.AddInParameter(commandWrapper, "@UserId", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@OrderDate", DbType.DateTime, DBNull.Value);
            database.AddInParameter(commandWrapper, "@ShipAddr1", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@ShipAddr2", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@ShipCity", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@ShipState", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@ShipZip", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@ShipCountry", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@BillAddr1", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@BillAddr2", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@BillCity", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@BillState", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@BillZip", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@BillCountry", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@Courier", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@TotalPrice", DbType.Decimal, DBNull.Value);
            database.AddInParameter(commandWrapper, "@BillToFirstName", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@BillToLastName", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@ShipToFirstName", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@ShipToLastName", DbType.AnsiString, DBNull.Value);
            database.AddInParameter(commandWrapper, "@AuthorizationNumber", DbType.Int32, DBNull.Value);
            database.AddInParameter(commandWrapper, "@Locale", DbType.AnsiString, DBNull.Value);

            // replace all instances of 'AND' and 'OR' because we already set searchUsingOR
            whereClause = whereClause.Replace(" AND ", "|").Replace(" OR ", "|");
            string[] clauses = whereClause.ToLower().Split('|');

            // Here's what's going on below: Find a field, then to get the value we
            // drop the field name from the front, trim spaces, drop the '=' sign,
            // trim more spaces, and drop any outer single quotes.
            // Now handles the case when two fields start off the same way - like "Friendly='Yes' AND Friend='john'"

            char[] equalSign   = { '=' };
            char[] singleQuote = { '\'' };
            foreach (string clause in clauses)
            {
                if (clause.Trim().StartsWith("orderid ") || clause.Trim().StartsWith("orderid="))
                {
                    database.SetParameterValue(commandWrapper, "@OrderId",
                                               clause.Trim().Remove(0, 7).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("userid ") || clause.Trim().StartsWith("userid="))
                {
                    database.SetParameterValue(commandWrapper, "@UserId",
                                               clause.Trim().Remove(0, 6).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("orderdate ") || clause.Trim().StartsWith("orderdate="))
                {
                    database.SetParameterValue(commandWrapper, "@OrderDate",
                                               clause.Trim().Remove(0, 9).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("shipaddr1 ") || clause.Trim().StartsWith("shipaddr1="))
                {
                    database.SetParameterValue(commandWrapper, "@ShipAddr1",
                                               clause.Trim().Remove(0, 9).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("shipaddr2 ") || clause.Trim().StartsWith("shipaddr2="))
                {
                    database.SetParameterValue(commandWrapper, "@ShipAddr2",
                                               clause.Trim().Remove(0, 9).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("shipcity ") || clause.Trim().StartsWith("shipcity="))
                {
                    database.SetParameterValue(commandWrapper, "@ShipCity",
                                               clause.Trim().Remove(0, 8).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("shipstate ") || clause.Trim().StartsWith("shipstate="))
                {
                    database.SetParameterValue(commandWrapper, "@ShipState",
                                               clause.Trim().Remove(0, 9).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("shipzip ") || clause.Trim().StartsWith("shipzip="))
                {
                    database.SetParameterValue(commandWrapper, "@ShipZip",
                                               clause.Trim().Remove(0, 7).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("shipcountry ") || clause.Trim().StartsWith("shipcountry="))
                {
                    database.SetParameterValue(commandWrapper, "@ShipCountry",
                                               clause.Trim().Remove(0, 11).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("billaddr1 ") || clause.Trim().StartsWith("billaddr1="))
                {
                    database.SetParameterValue(commandWrapper, "@BillAddr1",
                                               clause.Trim().Remove(0, 9).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("billaddr2 ") || clause.Trim().StartsWith("billaddr2="))
                {
                    database.SetParameterValue(commandWrapper, "@BillAddr2",
                                               clause.Trim().Remove(0, 9).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("billcity ") || clause.Trim().StartsWith("billcity="))
                {
                    database.SetParameterValue(commandWrapper, "@BillCity",
                                               clause.Trim().Remove(0, 8).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("billstate ") || clause.Trim().StartsWith("billstate="))
                {
                    database.SetParameterValue(commandWrapper, "@BillState",
                                               clause.Trim().Remove(0, 9).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("billzip ") || clause.Trim().StartsWith("billzip="))
                {
                    database.SetParameterValue(commandWrapper, "@BillZip",
                                               clause.Trim().Remove(0, 7).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("billcountry ") || clause.Trim().StartsWith("billcountry="))
                {
                    database.SetParameterValue(commandWrapper, "@BillCountry",
                                               clause.Trim().Remove(0, 11).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("courier ") || clause.Trim().StartsWith("courier="))
                {
                    database.SetParameterValue(commandWrapper, "@Courier",
                                               clause.Trim().Remove(0, 7).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("totalprice ") || clause.Trim().StartsWith("totalprice="))
                {
                    database.SetParameterValue(commandWrapper, "@TotalPrice",
                                               clause.Trim().Remove(0, 10).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("billtofirstname ") || clause.Trim().StartsWith("billtofirstname="))
                {
                    database.SetParameterValue(commandWrapper, "@BillToFirstName",
                                               clause.Trim().Remove(0, 15).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("billtolastname ") || clause.Trim().StartsWith("billtolastname="))
                {
                    database.SetParameterValue(commandWrapper, "@BillToLastName",
                                               clause.Trim().Remove(0, 14).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("shiptofirstname ") || clause.Trim().StartsWith("shiptofirstname="))
                {
                    database.SetParameterValue(commandWrapper, "@ShipToFirstName",
                                               clause.Trim().Remove(0, 15).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("shiptolastname ") || clause.Trim().StartsWith("shiptolastname="))
                {
                    database.SetParameterValue(commandWrapper, "@ShipToLastName",
                                               clause.Trim().Remove(0, 14).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("authorizationnumber ") || clause.Trim().StartsWith("authorizationnumber="))
                {
                    database.SetParameterValue(commandWrapper, "@AuthorizationNumber",
                                               clause.Trim().Remove(0, 19).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }
                if (clause.Trim().StartsWith("locale ") || clause.Trim().StartsWith("locale="))
                {
                    database.SetParameterValue(commandWrapper, "@Locale",
                                               clause.Trim().Remove(0, 6).Trim().TrimStart(equalSign).Trim().Trim(singleQuote));
                    continue;
                }

                throw new ArgumentException("Unable to use this part of the where clause in this version of Find: " + clause);
            }

            IDataReader reader = null;
            //Create Collection
            TList <Orders> rows = new TList <Orders>();


            try
            {
                //Provider Data Requesting Command Event
                OnDataRequesting(new CommandEventArgs(commandWrapper, "Find", rows));

                if (transactionManager != null)
                {
                    reader = Utility.ExecuteReader(transactionManager, commandWrapper);
                }
                else
                {
                    reader = Utility.ExecuteReader(database, commandWrapper);
                }

                Fill(reader, rows, start, pageLength);

                if (reader.NextResult())
                {
                    if (reader.Read())
                    {
                        count = reader.GetInt32(0);
                    }
                }

                //Provider Data Requested Command Event
                OnDataRequested(new CommandEventArgs(commandWrapper, "Find", rows));
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                }

                commandWrapper = null;
            }
            return(rows);
        }