private static void CreateLensesIfNotExist(PhotographyContext context, IEnumerable<XElement> xLenses, Manufacturer manufacturer)
        {
            foreach (var xLens in xLenses)
            {
                var lensModel = xLens.Attribute("model").Value;
                var lensType = xLens.Attribute("type").Value;
                var lensPrice = xLens.Attribute("price");

                var lens = context.Lenses.FirstOrDefault(x => x.Model == lensModel);
                if (lens != null)
                {
                    Console.WriteLine("Existing lens: {0}", lensModel);
                }
                else
                {
                    lens = new Lens
                    {
                        Model = lensModel,
                        Type = lensType,
                        Price = lensPrice != null ? decimal.Parse(lensPrice.Value) : default(decimal?),
                        ManufacturerId = manufacturer.Id
                    };

                    context.Lenses.Add(lens);
                    context.SaveChanges();
                    Console.WriteLine("Created lens: {0}", lensModel);
                }
            }
        }
        private static Manufacturer CreateManufacturerIfNotExists(PhotographyContext context, XElement xManufacturer)
        {
            Manufacturer manufacturer = null;
            var xElementManufacturerName = xManufacturer.Element("manufacturer-name");
            if (xElementManufacturerName != null)
            {
                var manufacturerName = xElementManufacturerName.Value;
                manufacturer = context.Manufacturers.FirstOrDefault(x => x.Name == manufacturerName);
                if (manufacturer != null)
                {
                    Console.WriteLine("Existing manufacturer: {0}", manufacturerName);
                }
                else
                {
                    manufacturer = new Manufacturer
                    {
                        Name = manufacturerName,
                    };
                    context.Manufacturers.Add(manufacturer);
                    context.SaveChanges();
                    Console.WriteLine("Created manufacturer: {0}", manufacturerName);
                }
            }

            return manufacturer;
        }
        private static void ProcessRequest(EquipmentRequest request)
        {
            var context = new PhotographyContext();
            var manufacturer = context.Manufacturers.FirstOrDefault(x => x.Name == request.Manufacturer);

            var cameraIds = context.Cameras
                .Where(x => x.ManufacturerId == manufacturer.Id)
                .Select(x => x.Id)
                .ToList();
            var lensIds = context.Lenses
                .Where(x => x.ManufacturerId == manufacturer.Id)
                .Select(x => x.Id)
                .ToList();
            var rnd = new Random();
            for (int i = 0; i < request.GenerateCount; i++)
            {
                var equipment = new Equipment();
                var lensRand = rnd.Next(lensIds.Count);
                var cameraRand = rnd.Next(cameraIds.Count);
                equipment.LensId = lensIds[lensRand];
                equipment.CameraId = cameraIds[cameraRand];

                context.Equipments.Add(equipment);
                context.SaveChanges();

                var equipmentDb = context.Equipments
                    .Include(x => x.Camera)
                    .Include(x => x.Lens)
                    .FirstOrDefault(x => x.Id == equipment.Id);

                Console.WriteLine("Equipment added: {0} (Camera: {1} - Lens: {2})",
                    manufacturer.Name,
                    equipmentDb.Camera.Model,
                    equipmentDb.Lens.Model);
            }
        }