Ejemplo n.º 1
0
        private static void CreateLensIfNotExists(
            PhotographyEntities context,
            IEnumerable <XElement> xLenses,
            Manufacturer manufacturer)
        {
            foreach (var xLense in xLenses)
            {
                // Find the lens by model and type (if exists)
                var lenseModel = xLense.Attribute("model").Value;
                var lenseType  = xLense.Attribute("type").Value;
                var lensePrice = xLense.Attribute("price");

                var lens = context.Lenses.FirstOrDefault(l => l.Model == lenseModel);
                if (lens != null)
                {
                    Console.WriteLine($"Existing lens: {lenseModel}");
                }
                else
                {
                    lens = new Lens
                    {
                        Model = lenseModel,
                        Type  = lenseType,
                        Price = lensePrice != null?decimal.Parse(lensePrice.Value) : default(decimal?),
                                    ManufacturerId = manufacturer.Id
                    };

                    context.Lenses.Add(lens);
                    context.SaveChanges();
                    Console.WriteLine("Created lens: {0}", lenseModel);
                }
            }
        }
Ejemplo n.º 2
0
        private static Manufacturer CreateManufacturerIfNotExist(PhotographyEntities context, XElement xManufacturer)
        {
            Manufacturer manufacturer             = null;
            var          xElementManufacturerName = xManufacturer.Element("manufacturer-name");

            if (xElementManufacturerName != null)
            {
                string manufacturerName = xElementManufacturerName.Value;
                manufacturer = context.Manufacturers.FirstOrDefault(m => m.Name == manufacturerName);
                if (manufacturer != null)
                {
                    Console.WriteLine($"Existing manufacturer: {manufacturerName}");
                }
                else
                {
                    // Create a new manufacturer in the database
                    manufacturer = new Manufacturer()
                    {
                        Name = manufacturerName
                    };
                    context.Manufacturers.Add(manufacturer);
                    context.SaveChanges();
                    Console.WriteLine($"Created manufacturer: {manufacturerName}");
                }
            }
            return(manufacturer);
        }
Ejemplo n.º 3
0
        static void Main(string[] args)
        {
            var context = new PhotographyEntities();

            var photographs = context.Photographs
                              .OrderBy(p => p.Title)
                              .Select(p => new
            {
                p.Title,
                category = p.Category.Name,
                p.Link,
                Equipment = new
                {
                    Camera = new
                    {
                        Name       = p.Equipment.Camera.Manufacturer.Name + " " + p.Equipment.Camera.Model,
                        Megapixels = p.Equipment.Camera.Megapixels
                    },
                    Lens = new
                    {
                        Model = p.Equipment.Lens.Manufacturer.Name + " " + p.Equipment.Lens.Model,
                        Price = p.Equipment.Lens.Price
                    }
                }
            });

            var resultXml = new XElement("photographs");

            foreach (var photo in photographs)
            {
                var photoXml = new XElement("photograph");
                photoXml.Add(new XAttribute("title", photo.Title));
                photoXml.Add(new XElement("category", photo.category));
                photoXml.Add(new XElement("link", photo.Link));

                var equipmentXml = new XElement("equipment");
                equipmentXml.Add(new XElement("camera", photo.Equipment.Camera.Name, new XAttribute("megapixels", photo.Equipment.Camera.Megapixels)));

                if (photo.Equipment.Lens.Price.HasValue)
                {
                    equipmentXml.Add(new XElement("lens", photo.Equipment.Lens.Model, new XAttribute("price", string.Format("{0:f2}", photo.Equipment.Lens.Price))));
                }
                else
                {
                    equipmentXml.Add(new XElement("lens", photo.Equipment.Lens.Model));
                }

                photoXml.Add(equipmentXml);
                resultXml.Add(photoXml);
            }

            var resultXmlDoc = new XDocument();

            resultXmlDoc.Add(resultXml);
            resultXmlDoc.Save("photographs.xml");

            Console.WriteLine("Photographs exported to photographs.xml");
        }
Ejemplo n.º 4
0
        private static XDocument CreateXDocument()
        {
            var context = new PhotographyEntities();

            var photographs = context.Photographs
                .Select(
                    ph => new
                              {
                                  Title = ph.Title,
                                  Category = ph.Category.Name,
                                  Link = ph.Link,
                                  Equipment = new
                                                  {
                                                      CameraModel = ph.Equipment.Camera.Model,
                                                      CameraMegapixels = ph.Equipment.Camera.Megapixels,
                                                      LensName = ph.Equipment.Lens.Model,
                                                      LensPrice = ph.Equipment.Lens.Price
                                                  }
                              })
                .OrderBy(ph => ph.Title);

            var photographsNode = new XElement("photographs");

            foreach (var photograph in photographs)
            {
                var photographNode = new XElement(
                    "photograph",
                    new XAttribute("title", photograph.Title),
                    new XElement("category", photograph.Category),
                    new XElement("link", photograph.Link));

                var equipmentNode = new XElement("equipment");

                var cameraNode = new XElement("camera", photograph.Equipment.CameraModel);
                if (photograph.Equipment.CameraMegapixels != null)
                {
                    cameraNode.Add(new XAttribute("megapixels", photograph.Equipment.CameraMegapixels));
                }

                var lensNode = new XElement("lens", photograph.Equipment.LensName);
                if (photograph.Equipment.LensPrice != null)
                {
                    lensNode.Add(new XAttribute("price", photograph.Equipment.LensPrice));
                }

                equipmentNode.Add(cameraNode, lensNode);
                photographNode.Add(equipmentNode);
                photographsNode.Add(photographNode);
            }

            var xDocument = new XDocument(photographsNode);
            return xDocument;
        }
Ejemplo n.º 5
0
        static void Main(string[] args)
        {
            var context = new PhotographyEntities();

            var photosQuery = context.Photographs
                              .OrderBy(p => p.Title)
                              .Select(p => new
            {
                Title            = p.Title,
                Category         = p.Category.Name,
                Link             = p.Link,
                EquipmentCameras = p.Equipment.Camera,
                EquipmentLens    = p.Equipment.Lens,
            });

            var xmlDoc  = new XDocument();
            var xmlRoot = new XElement("photographs");

            xmlDoc.Add(xmlRoot);

            foreach (var photo in photosQuery)
            {
                var photoXML = new XElement("photograph", new XAttribute("title", photo.Title));
                xmlRoot.Add(photoXML);

                var categoryXML = new XElement("category", photo.Category);
                var linkXml     = new XElement("link", photo.Link);
                photoXML.Add(categoryXML);
                photoXML.Add(linkXml);

                var equipmentXML = new XElement("equipment");
                photoXML.Add(equipmentXML);

                var cameraXML = new XElement("camera", photo.EquipmentCameras.Model, new XAttribute("megapixels", photo.EquipmentCameras.Megapixels));
                equipmentXML.Add(cameraXML);

                var lensXML = new XElement("lens", photo.EquipmentLens.Model);
                if (photo.EquipmentLens.Price != null)
                {
                    var attr = new XAttribute("price", photo.EquipmentLens.Price);
                    lensXML.Add(attr);
                }

                equipmentXML.Add(lensXML);
            }

            xmlDoc.Save(@"../../photographs.xml");
        }
Ejemplo n.º 6
0
        static void Main(string[] args)
        {
            var inputXml          = XDocument.Load("../../manufacturers-and-lenses.xml");
            var xManufacturers    = inputXml.XPathSelectElements("/manufacturers-and-lenses/manufacturer");
            var context           = new PhotographyEntities();
            int manufacturerCount = 1;

            foreach (var xManufacturer in xManufacturers)
            {
                Console.WriteLine($"Processing manufacturer #{manufacturerCount}", ++manufacturerCount);
                Manufacturer manufacturer = CreateManufacturerIfNotExist(context, xManufacturer);
                var          xLenses      = xManufacturer.XPathSelectElements("lenses/lens");
                CreateLensIfNotExists(context, xLenses, manufacturer);
                Console.WriteLine();
            }
        }
        public static void Main()
        {
            var context = new PhotographyEntities();

            var cameras = context.Cameras
                .Select(c => new
                             {
                                 c.Model,
                                 Manufactorer = c.Manufacturer.Name
                             })
                .OrderBy(c => c.Manufactorer)
                .ThenBy(c => c.Model);

            foreach (var camera in cameras)
            {
                Console.WriteLine(camera.Manufactorer + ' ' + camera.Model);
            }
        }
        private static Manufacturer ImportManufactorer(XElement manufacturerNode, PhotographyEntities context)
        {
            var manufactorerName = manufacturerNode.Element("manufacturer-name").Value;

            var manufactorer = new Manufacturer();
            if (!context.Manufacturers.Any(m => m.Name == manufactorerName))
            {
                manufactorer.Name = manufactorerName;
                context.Manufacturers.Add(manufactorer);
                Console.WriteLine("Created manufacturer: " + manufactorer.Name);
            }
            else
            {
                manufactorer = context.Manufacturers.FirstOrDefault(m => m.Name == manufactorerName);
                if (manufactorer != null)
                {
                    Console.WriteLine("Existing manufacturer: " + manufactorer.Name);
                }
            }
            return manufactorer;
        }
Ejemplo n.º 9
0
        static void Main(string[] args)
        {
            var context = new PhotographyEntities();

            var manufacturersQuery = context.Manufacturers
                                     .OrderBy(m => m.Name)
                                     .Select(m => new
            {
                manufacturer = m.Name,
                cameras      = m.Cameras
                               .OrderBy(c => c.Model)
                               .Select(c => new
                {
                    model = c.Model,
                    price = c.Price
                })
            });

            var json = new JavaScriptSerializer().Serialize(manufacturersQuery.ToList());

            System.IO.File.WriteAllText(@"..\..\manufactureres-and-cameras.json", json);
        }
Ejemplo n.º 10
0
        public static void Main()
        {
            var context = new PhotographyEntities();

            var manufactorers = context.Manufacturers
                .Select(m => new
                             {
                                 manufacturer = m.Name,
                                 cameras = m.Cameras
                                                .Select(c => new
                                                              {
                                                                  model = c.Model,
                                                                  price = c.Price
                                                              })
                                                .OrderBy(c => c.model)
                             })
                .OrderBy(m => m.manufacturer);

            var output = JsonConvert.SerializeObject(manufactorers);
            File.AppendAllText(@"..\..\manufactureres-and-cameras.json", output);
            Console.WriteLine("Export manufactureres-and-cameras.json complited!");
        }
Ejemplo n.º 11
0
        static void Main(string[] args)
        {
            var context       = new PhotographyEntities();
            var manufacturers = context.Manufacturers
                                .OrderBy(m => m.Name)
                                .Select(m => new
            {
                m.Name,
                cameras = m.Cameras
                          .OrderBy(c => c.Model)
                          .Select(c => new
                {
                    c.Model,
                    c.Price
                })
            }).ToList();
            var jsonSerializer = new JavaScriptSerializer();
            var json           = jsonSerializer.Serialize(manufacturers);

            File.WriteAllText("manufactureres-and-cameras.json", json);
            Console.WriteLine("manufactureres-and-cameras.json exported");
        }
        private static void ImportLenses(XElement manufacturerNode, PhotographyEntities context, Manufacturer manufactorer)
        {
            var lenses = manufacturerNode.XPathSelectElements("lenses/lens");

            foreach (var lenseNode in lenses)
            {
                var lensModel = lenseNode.Attribute("model").Value;

                var lens = new Lens();
                if (!context.Lenses.Any(l => l.Model == lensModel))
                {
                    lens.Model = lenseNode.Attribute("model").Value;
                    lens.Type = lenseNode.Attribute("type").Value;

                    if (lenseNode.Attribute("price") != null)
                    {
                        lens.Price = decimal.Parse(lenseNode.Attribute("price").Value);
                    }

                    context.Lenses.Add(lens);
                    if (manufactorer != null)
                    {
                        manufactorer.Lenses.Add(lens);
                    }

                    Console.WriteLine("Created lens: " + lens.Model);
                }
                else
                {
                    lens = context.Lenses.FirstOrDefault(l => l.Model == lensModel);
                    if (lens != null)
                    {
                        Console.WriteLine("Existing lens: " + lens.Model);
                    }
                }
            }
        }
        public static void Main()
        {
            var context = new PhotographyEntities();

            var xDocument = XDocument.Load(@"..\..\manufacturers-and-lenses.xml");

            var manufacturersAndLenses = xDocument.XPathSelectElements("/manufacturers-and-lenses/manufacturer");

            int count = 1;
            foreach (var manufacturerNode in manufacturersAndLenses)
            {
                Console.WriteLine("Processing manufacturer #{0} ...", count);
                var manufactorer = ImportManufactorer(manufacturerNode, context);

                if (manufacturerNode.Element("lenses") != null)
                {
                    ImportLenses(manufacturerNode, context, manufactorer);
                }

                context.SaveChanges();

                count++;
            }
        }
Ejemplo n.º 14
0
        private static void ProcessRequest(Request request)
        {
            var context            = new PhotographyEntities();
            var manufacturersQuery = context.Manufacturers.AsQueryable();

            var manufacturer = context.Manufacturers.FirstOrDefault(m => m.Name == request.ManufacturerName);

            var cameraIds = context.Cameras
                            .Where(c => c.ManufacturerId == manufacturer.Id)
                            .Select(c => c.Id)
                            .ToList();

            var lensIds = context.Lenses
                          .Where(l => l.ManufacturerId == manufacturer.Id)
                          .Select(l => l.Id)
                          .ToList();

            var random = new Random();

            for (int i = 0; i < request.GenerateCount; i++)
            {
                var equipment = new Equipment();
                equipment.CameraId = cameraIds[random.Next(cameraIds.Count)];
                equipment.LensId   = lensIds[random.Next(lensIds.Count)];

                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: {manufacturer.Name} (Camera: {equipmentDb.Camera.Model} - Lens: {equipmentDb.Lens.Model})");
            }
        }
Ejemplo n.º 15
0
        static void Main(string[] args)
        {
            var defaultGenerateCount = 10;
            var context             = new PhotographyEntities();
            var defaultManufacturer = context.Manufacturers.FirstOrDefault(m => m.Name == "Nikon");

            var xmlDoc = XDocument.Load("../../generate-equipments.xml");
            //var photographyElements = xmlDoc.Root.Elements();
            var generateElements = xmlDoc.XPathSelectElements("/generate-random-equipments/generate");

            var camerasIds = context.Cameras.Select(c => new { id = c.Id }).ToList();
            var lensesIds  = context.Lenses.Select(l => new { id = l.Id }).ToList();

            var count = 1;

            foreach (var element in generateElements)
            {
                Console.WriteLine("Processing request #{0} ...", count++);


                var currentManufacturer = defaultManufacturer;
                if (!string.IsNullOrEmpty(element.Value))
                {
                    currentManufacturer = context.Manufacturers.FirstOrDefault(m => m.Name == element.Value);
                }

                var currentGenerateCount = defaultGenerateCount;
                if (element.HasAttributes)
                {
                    currentGenerateCount = int.Parse(element.Attribute("generate-count").Value);
                }

                for (int i = 0; i < currentGenerateCount; i++)
                {
                    var random         = new Random();
                    var randomCameraId = camerasIds[random.Next(1, camerasIds.Count)];
                    var randomLensId   = lensesIds[random.Next(1, lensesIds.Count)];

                    var camera = context.Cameras.FirstOrDefault(c => c.Id == randomCameraId.id);
                    var lens   = context.Lenses.FirstOrDefault(c => c.Id == randomLensId.id);

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

                    if (!currentManufacturer.Cameras.Contains(camera))
                    {
                        currentManufacturer.Cameras.Add(camera);
                    }

                    if (!currentManufacturer.Lenses.Contains(lens))
                    {
                        currentManufacturer.Lenses.Add(lens);
                    }
                }

                context.SaveChanges();
                Console.WriteLine();
            }

            Console.ReadLine();
        }
Ejemplo n.º 16
0
        static void Main(string[] args)
        {
            var context = new PhotographyEntities();
            var xmlDoc  = XDocument.Load("../../manufacturers-and-lenses.xml");
            //var photographyElements = xmlDoc.Root.Elements();
            var photographyElements = xmlDoc.XPathSelectElements("/manufacturers-and-lenses/manufacturer");

            var count = 1;

            foreach (var photographyElement in photographyElements)
            {
                Console.WriteLine("Processing manufacturer #{0} ...", count++);

                var manufacturerName = photographyElement.Element("manufacturer-name").Value;
                var manufacturer     = context.Manufacturers.FirstOrDefault(m => m.Name == manufacturerName);
                if (manufacturer == null)
                {
                    manufacturer      = new Manufacturer();
                    manufacturer.Name = manufacturerName;
                    context.Manufacturers.Add(manufacturer);
                    Console.WriteLine("Created manufacturer: {0}", manufacturerName);
                }
                else
                {
                    Console.WriteLine("Existing manufacturer: {0}", manufacturerName);
                }

                var lenses = photographyElement.XPathSelectElements("lenses/lens");
                foreach (var lens in lenses)
                {
                    var lensModel = lens.Attribute("model").Value;

                    var lensEntity = context.Lenses.FirstOrDefault(l => l.Model == lensModel);
                    if (lensEntity == null)
                    {
                        lensEntity       = new Lens();
                        lensEntity.Model = lensModel;

                        var lensType = lens.Attribute("type").Value;
                        lensEntity.Type = lensType;

                        if (lens.Attribute("price") != null)
                        {
                            var lensPrice = lens.Attribute("price").Value;
                            lensEntity.Price = decimal.Parse(lensPrice);
                        }

                        context.Lenses.Add(lensEntity);
                        Console.WriteLine("Created lens {0}", lensModel);
                    }
                    else
                    {
                        Console.WriteLine("Existing lens: {0}", lensModel);
                    }

                    manufacturer.Lenses.Add(lensEntity);
                }

                context.SaveChanges();
                Console.WriteLine();
            }
        }