/// <summary>
        /// Adds a new record into the <c>RetailRoute</c> table.
        /// </summary>
        /// <param name="value">The <see cref="RetailRouteRow"/> object to be inserted.</param>
        public virtual void Insert(RetailRouteRow value)
        {
            string sqlStr = "INSERT INTO [dbo].[RetailRoute] (" +
                            "[retail_route_id], " +
                            "[customer_acct_id], " +
                            "[route_id], " +
                            "[status], " +
                            "[start_bonus_minutes], " +
                            "[bonus_minutes_type], " +
                            "[multiplier]" +
                            ") VALUES (" +
                            _db.CreateSqlParameterName("Retail_route_id") + ", " +
                            _db.CreateSqlParameterName("Customer_acct_id") + ", " +
                            _db.CreateSqlParameterName("Route_id") + ", " +
                            _db.CreateSqlParameterName("Status") + ", " +
                            _db.CreateSqlParameterName("Start_bonus_minutes") + ", " +
                            _db.CreateSqlParameterName("Bonus_minutes_type") + ", " +
                            _db.CreateSqlParameterName("Multiplier") + ")";
            IDbCommand cmd = _db.CreateCommand(sqlStr);

            AddParameter(cmd, "Retail_route_id", value.Retail_route_id);
            AddParameter(cmd, "Customer_acct_id", value.Customer_acct_id);
            AddParameter(cmd, "Route_id",
                         value.IsRoute_idNull ? DBNull.Value : (object)value.Route_id);
            AddParameter(cmd, "Status", value.Status);
            AddParameter(cmd, "Start_bonus_minutes", value.Start_bonus_minutes);
            AddParameter(cmd, "Bonus_minutes_type", value.Bonus_minutes_type);
            AddParameter(cmd, "Multiplier", value.Multiplier);
            cmd.ExecuteNonQuery();
        }
        /// <summary>
        /// Reads data from the provided data reader and returns
        /// an array of mapped objects.
        /// </summary>
        /// <param name="reader">The <see cref="System.Data.IDataReader"/> object to read data from the table.</param>
        /// <param name="startIndex">The index of the first record to map.</param>
        /// <param name="length">The number of records to map.</param>
        /// <param name="totalRecordCount">A reference parameter that returns the total number
        /// of records in the reader object if 0 was passed into the method; otherwise it returns -1.</param>
        /// <returns>An array of <see cref="RetailRouteRow"/> objects.</returns>
        protected virtual RetailRouteRow[] MapRecords(IDataReader reader,
                                                      int startIndex, int length, ref int totalRecordCount)
        {
            if (0 > startIndex)
            {
                throw new ArgumentOutOfRangeException("startIndex", startIndex, "StartIndex cannot be less than zero.");
            }
            if (0 > length)
            {
                throw new ArgumentOutOfRangeException("length", length, "Length cannot be less than zero.");
            }

            int retail_route_idColumnIndex     = reader.GetOrdinal("retail_route_id");
            int customer_acct_idColumnIndex    = reader.GetOrdinal("customer_acct_id");
            int route_idColumnIndex            = reader.GetOrdinal("route_id");
            int statusColumnIndex              = reader.GetOrdinal("status");
            int start_bonus_minutesColumnIndex = reader.GetOrdinal("start_bonus_minutes");
            int bonus_minutes_typeColumnIndex  = reader.GetOrdinal("bonus_minutes_type");
            int multiplierColumnIndex          = reader.GetOrdinal("multiplier");

            System.Collections.ArrayList recordList = new System.Collections.ArrayList();
            int ri = -startIndex;

            while (reader.Read())
            {
                ri++;
                if (ri > 0 && ri <= length)
                {
                    RetailRouteRow record = new RetailRouteRow();
                    recordList.Add(record);

                    record.Retail_route_id  = Convert.ToInt32(reader.GetValue(retail_route_idColumnIndex));
                    record.Customer_acct_id = Convert.ToInt16(reader.GetValue(customer_acct_idColumnIndex));
                    if (!reader.IsDBNull(route_idColumnIndex))
                    {
                        record.Route_id = Convert.ToInt32(reader.GetValue(route_idColumnIndex));
                    }
                    record.Status = Convert.ToByte(reader.GetValue(statusColumnIndex));
                    record.Start_bonus_minutes = Convert.ToInt16(reader.GetValue(start_bonus_minutesColumnIndex));
                    record.Bonus_minutes_type  = Convert.ToByte(reader.GetValue(bonus_minutes_typeColumnIndex));
                    record.Multiplier          = Convert.ToInt16(reader.GetValue(multiplierColumnIndex));

                    if (ri == length && 0 != totalRecordCount)
                    {
                        break;
                    }
                }
            }

            totalRecordCount = 0 == totalRecordCount ? ri + startIndex : -1;
            return((RetailRouteRow[])(recordList.ToArray(typeof(RetailRouteRow))));
        }
        /// <summary>
        /// Converts <see cref="System.Data.DataRow"/> to <see cref="RetailRouteRow"/>.
        /// </summary>
        /// <param name="row">The <see cref="System.Data.DataRow"/> object to be mapped.</param>
        /// <returns>A reference to the <see cref="RetailRouteRow"/> object.</returns>
        protected virtual RetailRouteRow MapRow(DataRow row)
        {
            RetailRouteRow mappedObject = new RetailRouteRow();
            DataTable      dataTable    = row.Table;
            DataColumn     dataColumn;

            // Column "Retail_route_id"
            dataColumn = dataTable.Columns["Retail_route_id"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Retail_route_id = (int)row[dataColumn];
            }
            // Column "Customer_acct_id"
            dataColumn = dataTable.Columns["Customer_acct_id"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Customer_acct_id = (short)row[dataColumn];
            }
            // Column "Route_id"
            dataColumn = dataTable.Columns["Route_id"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Route_id = (int)row[dataColumn];
            }
            // Column "Status"
            dataColumn = dataTable.Columns["Status"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Status = (byte)row[dataColumn];
            }
            // Column "Start_bonus_minutes"
            dataColumn = dataTable.Columns["Start_bonus_minutes"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Start_bonus_minutes = (short)row[dataColumn];
            }
            // Column "Bonus_minutes_type"
            dataColumn = dataTable.Columns["Bonus_minutes_type"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Bonus_minutes_type = (byte)row[dataColumn];
            }
            // Column "Multiplier"
            dataColumn = dataTable.Columns["Multiplier"];
            if (!row.IsNull(dataColumn))
            {
                mappedObject.Multiplier = (short)row[dataColumn];
            }
            return(mappedObject);
        }
        /// <summary>
        /// Updates a record in the <c>RetailRoute</c> table.
        /// </summary>
        /// <param name="value">The <see cref="RetailRouteRow"/>
        /// object used to update the table record.</param>
        /// <returns>true if the record was updated; otherwise, false.</returns>
        public virtual bool Update(RetailRouteRow value)
        {
            string sqlStr = "UPDATE [dbo].[RetailRoute] SET " +
                            "[customer_acct_id]=" + _db.CreateSqlParameterName("Customer_acct_id") + ", " +
                            "[route_id]=" + _db.CreateSqlParameterName("Route_id") + ", " +
                            "[status]=" + _db.CreateSqlParameterName("Status") + ", " +
                            "[start_bonus_minutes]=" + _db.CreateSqlParameterName("Start_bonus_minutes") + ", " +
                            "[bonus_minutes_type]=" + _db.CreateSqlParameterName("Bonus_minutes_type") + ", " +
                            "[multiplier]=" + _db.CreateSqlParameterName("Multiplier") +
                            " WHERE " +
                            "[retail_route_id]=" + _db.CreateSqlParameterName("Retail_route_id");
            IDbCommand cmd = _db.CreateCommand(sqlStr);

            AddParameter(cmd, "Customer_acct_id", value.Customer_acct_id);
            AddParameter(cmd, "Route_id",
                         value.IsRoute_idNull ? DBNull.Value : (object)value.Route_id);
            AddParameter(cmd, "Status", value.Status);
            AddParameter(cmd, "Start_bonus_minutes", value.Start_bonus_minutes);
            AddParameter(cmd, "Bonus_minutes_type", value.Bonus_minutes_type);
            AddParameter(cmd, "Multiplier", value.Multiplier);
            AddParameter(cmd, "Retail_route_id", value.Retail_route_id);
            return(0 != cmd.ExecuteNonQuery());
        }
 /// <summary>
 /// Deletes the specified object from the <c>RetailRoute</c> table.
 /// </summary>
 /// <param name="value">The <see cref="RetailRouteRow"/> object to delete.</param>
 /// <returns>true if the record was deleted; otherwise, false.</returns>
 public bool Delete(RetailRouteRow value)
 {
     return(DeleteByPrimaryKey(value.Retail_route_id));
 }