public ICollection <PizzaIngredientDescription> GetAllPizzaIngredients(int pizzaId)
        {
            var pizzaIngredients = new Dictionary <int, PizzaIngredientDescription>();
            var reader           = this.ExecuteReader(
                @"select i.Id, i.Name
                from Pizzas as p
                join Pizzas_Ingredients as [pi]
                on [pi].PizzaId = p.Id
                join Ingredients as i
                on pi.IngredientId = i.Id
                where p.Id = @pizzaId",
                new Dictionary <string, object>()
            {
                { "@pizzaId", pizzaId }
            });

            using (reader)
            {
                while (reader.Read())
                {
                    int    ingredientId   = reader.GetInt32(0);
                    string ingredientName = reader.GetString(1);

                    if (!pizzaIngredients.ContainsKey(ingredientId))
                    {
                        pizzaIngredients[ingredientId] = new PizzaIngredientDescription(ingredientId, ingredientName);
                    }
                }
            }

            return(pizzaIngredients.Values);
        }
        public ICollection <PizzaIngredientDescription> GetAllIngredients()
        {
            var ingredients = new Dictionary <int, PizzaIngredientDescription>();
            var reader      = this.ExecuteReader(
                @"select Id, Name
                    from Ingredients");

            using (reader)
            {
                while (reader.Read())
                {
                    int    ingredientId   = reader.GetInt32(0);
                    string ingredientName = reader.GetString(1);

                    if (!ingredients.ContainsKey(ingredientId))
                    {
                        ingredients[ingredientId] = new PizzaIngredientDescription(ingredientId, ingredientName);
                    }
                }
            }

            return(ingredients.Values);
        }