//
        // GetCustomers():
        //
        // Returns all the customers from Db as a read only list.
        //
        public IReadOnlyList <Customer> GetCustomers()
        {
            List <Customer> customers = new List <Customer>();

            try
            {
                dataTier.openConnection();

                // query
                DataSet ds = dataTier.ExecuteNonScalarQuery(string.Format(@"
        SELECT *
        FROM Customer WITH(INDEX(CustomerLastName_Index))
        ORDER BY LastName ASC,
        FirstName ASC;
        "));

                // build list
                foreach (DataRow row in ds.Tables["TABLE"].Rows)
                {
                    customers.Add(
                        new Customer(
                            Convert.ToInt32(row["CID"].ToString()),
                            row["FirstName"].ToString(),
                            row["LastName"].ToString(),
                            row["Email"].ToString()
                            )
                        );
                }
            }
            catch (Exception e)
            {
                MessageBox.Show("GetCustomers(): " + e.Message);
                throw new ApplicationException(string.Format
                                                   ("Error in Business.GetCustomers(): '{0}'", e.Message));
            }
            finally
            {
                dataTier.CloseConnection();
            }

            return(customers);
        }