public static void Main()
        {
            var context = new PhotographySystemEntities();
            XDocument doc = XDocument.Load("../../generate-equipments.xml");

            var xmlGenerate = doc.XPathSelectElements("/generate-random-equipments/generate");
            int counter = 0;

            foreach (var generateTag in xmlGenerate)
            {
                Console.WriteLine("Processing request #{0} ...", ++counter);

                XAttribute generateCountAttr = generateTag.Attribute("generate-count");
                int generateCount = DefaultGenerateCount;
                if (generateCountAttr != null)
                {
                    generateCount = int.Parse(generateCountAttr.Value);
                }

                XElement manufacturerElement = generateTag.XPathSelectElement("manufacturer");
                string manufacturerName = DefaultManufactorerName;
                if (manufacturerElement != null)
                {
                    manufacturerName = manufacturerElement.Value;
                }

                GenerateRndEquipment(generateCount, manufacturerName, context);
                Console.WriteLine();
            }
        }
        public static void Main()
        {
            var context = new PhotographySystemEntities();
            var photographs = context.Photographs
                .OrderBy(p => p.Title)
                .Select(p => new
                {
                    p.Title,
                    Category = p.Category.Name,
                    p.Link,
                    EquipmentCamera = new
                    {
                        CameraManufacturerName = p.Equipment.Camera.Manufacturer.Name,
                        CameraModel = p.Equipment.Camera.Model,
                        CameraMegapixels = p.Equipment.Camera.Megapixels
                    },
                    EquipmentLens = new
                    {
                        LensManufacturerName = p.Equipment.Lens.Manufacturer.Name,
                        LensModel = p.Equipment.Lens.Model,
                        LensPrice = p.Equipment.Lens.Price
                    }
                }).ToList();

            XElement rootElement = new XElement("photographs");
            foreach (var photograph in photographs)
            {
                XElement newPhotogrpah = new XElement("photograph");
                newPhotogrpah.SetAttributeValue("title", photograph.Title);
                XElement category = new XElement("category");
                category.Value = photograph.Category;
                XElement link = new XElement("link");
                link.Value = photograph.Link;

                XElement equipment = new XElement("equipment");
                XElement camera = new XElement("camera");
                camera.SetAttributeValue("megapixels", photograph.EquipmentCamera.CameraMegapixels);
                camera.Value = photograph.EquipmentCamera.CameraManufacturerName + " "
                               + photograph.EquipmentCamera.CameraModel;

                XElement lens = new XElement("lens");
                if (photograph.EquipmentLens.LensPrice != null)
                {
                    lens.SetAttributeValue("price", photograph.EquipmentLens.LensPrice);
                }

                lens.Value = photograph.EquipmentLens.LensManufacturerName + " "
                               + photograph.EquipmentLens.LensModel;

                equipment.Add(camera);
                equipment.Add(lens);

                newPhotogrpah.Add(category);
                newPhotogrpah.Add(link);
                newPhotogrpah.Add(equipment);
                rootElement.Add(newPhotogrpah);
            }

            rootElement.Save("../../photographs.xml");
        }
 private static void AddLensToManufacturer(
     Lens lens, Manufacturer manufacturer, PhotographySystemEntities context)
 {
     if (!manufacturer.Lenses.Contains(lens))
     {
         manufacturer.Lenses.Add(lens);
         context.SaveChanges();
     }
 }
        public static void Main()
        {
            var context = new PhotographySystemEntities();
            var manufecturerAndModels = context.Cameras
                .Select(c => new
                {
                    Camera = c.Manufacturer.Name + " " + c.Model
                })
                .OrderBy(c => c.Camera);

            foreach (var manufecturerAndModel in manufecturerAndModels)
            {
                Console.WriteLine(manufecturerAndModel.Camera);
            }
        }
        private static void ImportLensesIfNotExist(
            IEnumerable<XElement> xmlLenses, Manufacturer manufacturer, PhotographySystemEntities context)
        {
            foreach (var xmlLense in xmlLenses)
            {
                XAttribute modelAttr = xmlLense.Attribute("model");
                XAttribute typeAttr = xmlLense.Attribute("type");
                XAttribute pricelAttr = xmlLense.Attribute("price");

                if (modelAttr == null || typeAttr == null)
                {
                    throw new ArgumentException("Model and type of lens is requiered.");
                }

                string model = modelAttr.Value;
                string type = typeAttr.Value;
                decimal? price = null;
                if (pricelAttr != null)
                {
                    price = decimal.Parse(pricelAttr.Value);
                }

                var lensInDb = context.Lenses
                    .FirstOrDefault(l => l.Model == model);

                if (lensInDb == null)
                {
                    Lens newLens = new Lens();
                    newLens.Manufacturer = manufacturer;
                    newLens.Model = model;
                    newLens.Type = type;
                    if (price != null)
                    {
                        newLens.Price = price;
                    }

                    context.Lenses.Add(newLens);
                    context.SaveChanges();
                    Console.WriteLine("Created lens: {0}", model);
                    AddLensToManufacturer(newLens, manufacturer, context);
                }
                else
                {
                    Console.WriteLine("Existing lens: {0}", model);
                    AddLensToManufacturer(lensInDb, manufacturer, context);
                }
            }
        }
        public static void Main()
        {
            var context = new PhotographySystemEntities();
            XDocument doc = XDocument.Load("../../manufacturers-and-lenses.xml");
            var xmlManufacturers = doc.XPathSelectElements("manufacturers-and-lenses/manufacturer");
            int counter = 1;

            foreach (var xmlManufacturer in xmlManufacturers)
            {
                Console.WriteLine("Processing manufacturer #{0} ...", counter);
                Manufacturer manufacturer = ImportManucturerIfNotExtists(xmlManufacturer, context);
                var xmlLenses = xmlManufacturer.XPathSelectElements("lenses/lens");
                ImportLensesIfNotExist(xmlLenses, manufacturer, context);
                counter++;
                Console.WriteLine();
            }
        }
        public static void Main()
        {
            var context = new PhotographySystemEntities();
            var manufecturersAndCameras = 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
                        })
                });

            string json = JsonConvert.SerializeObject(manufecturersAndCameras, Formatting.Indented);
            File.WriteAllText("../../manufactureres-and-cameras.json", json);
        }
        private static void GenerateRndEquipment(
            int generateCount, string manufacturerName, PhotographySystemEntities context)
        {
            int count = 0;

            while (count < generateCount)
            {
                Camera newEquipmentCamera = context.Cameras
                    .Where(c => c.Manufacturer.Name == manufacturerName)
                    .OrderBy(c => Guid.NewGuid()).Take(1).FirstOrDefault();

                Lens newEquipmentLens = context.Lenses
                    .Where(l => l.Manufacturer.Name == manufacturerName)
                    .OrderBy(l => Guid.NewGuid()).Take(1).FirstOrDefault();

                var equipmentInDb = context.Equipments
                    .FirstOrDefault(e => e.Camera.Model == newEquipmentCamera.Model &&
                        e.Lens.Model == newEquipmentLens.Model);

                if (equipmentInDb == null)
                {
                    Equipment newEquipment = new Equipment();
                    newEquipment.Camera = newEquipmentCamera;
                    newEquipment.Lens = newEquipmentLens;
                    context.Equipments.Add(newEquipment);
                    context.SaveChanges();
                    Console.WriteLine(
                        "Equipment added: {0} (Camera: {1} - Lens: {2})",
                        manufacturerName,
                        newEquipmentCamera.Model,
                        newEquipmentLens.Model);

                    count++;
                }
            }
        }
示例#9
0
        static void Main(string[] args)
        {
            var context = new PhotographySystemEntities();

            //1.ListManufacturerModel
            //var cameras = context.Cameras
            //    .OrderBy(c => c.Manufacturer.Name + " " + c.Model)
            //    .Select(c => c.Manufacturer.Name + " " + c.Model);

            //foreach (var camera in cameras)
            //{
            //    Console.WriteLine(camera);
            //}

            //2.ExportManufacturerAndCameraAsJSON
            //var manufacturers = context.Manufacturers
            //    .OrderBy(m => m.Name)
            //    .Select(m => new
            //    {
            //        manufacturer = m.Name,
            //        cameras = m.Cameras
            //            .OrderBy(c => c.Model)
            //            .Select(c => new 
            //            {
            //                c.Model,
            //                c.Price
            //            })
            //    });

            //string json = JsonConvert.SerializeObject(manufacturers, Newtonsoft.Json.Formatting.Indented);
            //File.WriteAllText("../../manufacturers-and-cameras.json", json);

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

            //var settings = new XmlWriterSettings()
            //{
            //    Indent = true,
            //    NewLineChars = "\n"
            //};

            //using (var writer = XmlWriter.Create("../../photographs.xml", settings))
            //{
            //    writer.WriteStartDocument();
            //    writer.WriteStartElement("photographs");

            //    foreach (var photograph in photographs)
            //    {
            //        writer.WriteStartElement("photograph");
            //        writer.WriteAttributeString("title", photograph.Title);
            //        writer.WriteStartElement("category");
            //        writer.WriteString(photograph.CategoryName);
            //        writer.WriteEndElement();
            //        writer.WriteStartElement("link");
            //        writer.WriteString(photograph.Link);
            //        writer.WriteEndElement();
            //        writer.WriteStartElement("equipment");
            //        writer.WriteStartElement("camera");
            //        writer.WriteAttributeString("megapixels", photograph.CameraMegapixels.ToString());
            //        writer.WriteString(photograph.Camera);
            //        writer.WriteEndElement();
            //        writer.WriteStartElement("lens");

            //        if (photograph.LensPrice != null)
            //        {
            //            writer.WriteAttributeString("price", Math.Round((decimal)photograph.LensPrice, 2).ToString());
            //        }

            //        writer.WriteString(photograph.Lens);
            //        writer.WriteEndElement();
            //        writer.WriteEndElement();
            //        writer.WriteEndElement();
            //    }

            //    writer.WriteEndElement();
            //    writer.WriteEndDocument();
            //}

            //4.ImportManufacturerAndLensesFromXML
            var xmlDocument = XDocument.Load("../../manufacturers-and-lenses.xml");
            var manufacturers =
                from manufacturer in xmlDocument.Descendants("manufacturer")
                select new
                {
                    Name = manufacturer.Element("manufacturer-name").Value,
                    Lenses = manufacturer.Element("lenses") == null ? null :
                        from lens in manufacturer.Descendants("lens")
                        select new
                        {
                            Model = lens.Attribute("model").Value,
                            Type = lens.Attribute("type").Value,
                            Price = lens.Attribute("price") == null ? null : lens.Attribute("price").Value
                        }
                };
            int manufacturerNumber = 1;

            foreach (var manufacturer in manufacturers)
            {
                Console.WriteLine("Prcessing manufacturer #{0}", manufacturerNumber);

                if (!context.Manufacturers.Any(m => m.Name == manufacturer.Name))
                {
                    context.Manufacturers.Add(new Manufacturer()
                    {
                        Name = manufacturer.Name
                    });
                    Console.WriteLine("Created manufacturer: {0}", manufacturer.Name);
                }
                else
                {
                    Console.WriteLine("Existing manufacturer: {0}", manufacturer.Name);
                }

                context.SaveChanges();

                foreach (var lens in manufacturer.Lenses)
                {
                    if (!context.Lenses.Any(l => l.Model == lens.Model))
                    {
                        if (lens.Price != null)
	                    {
                            context.Lenses.Add(new Lens()
                            {
                                Model = lens.Model,
                                Type = lens.Type,
                                Price = decimal.Parse(lens.Price),
                                ManufacturerId = context.Manufacturers.Where(m => m.Name == manufacturer.Name).FirstOrDefault().Id
                            });
                        }
                        else
                        {
                            context.Lenses.Add(new Lens()
                            {
                                Model = lens.Model,
                                Type = lens.Type,
                                Price = null,
                                ManufacturerId = context.Manufacturers.Where(m => m.Name == manufacturer.Name).FirstOrDefault().Id
                            });
                        }

                        Console.WriteLine("Created lens: {0}", lens.Model);
                    }
                    else
                    {
                        Console.WriteLine("Existing lens: {0}", lens.Model);
                    }
                }

                manufacturerNumber++;
            }

            context.SaveChanges();
        }
        private static Manufacturer ImportManucturerIfNotExtists(
            XElement xmlManufacturer, PhotographySystemEntities context)
        {
            XElement xmlManufacturerName = xmlManufacturer.Element("manufacturer-name");
            if (xmlManufacturerName == null)
            {
                throw new ArgumentException("Manufacturer name is required.");
            }

            string manufacturerName = xmlManufacturerName.Value;
            var manufacturerFromDb = context.Manufacturers
                .FirstOrDefault(m => m.Name == manufacturerName);

            if (manufacturerFromDb == null)
            {
                Manufacturer newManufacturer = new Manufacturer();
                newManufacturer.Name = manufacturerName;
                context.Manufacturers.Add(newManufacturer);
                context.SaveChanges();
                Console.WriteLine("Created manufacturer: {0}", manufacturerName);
                return newManufacturer;
            }

            Console.WriteLine("Existing manufacturer: {0}", manufacturerName);
            return manufacturerFromDb;
        }