static void Main()
 {
     var xmlDoc = XDocument.Load("../../manufacturers-and-lenses.xml");
     var xManufacturers = xmlDoc.XPathSelectElements("manufacturers-and-lenses/manufacturer");
     var contex = new PhotographySystemEntities();
     int processing = 1;
     foreach (var manufacturerXml in xManufacturers)
     {
         Console.WriteLine("Processing manufacturer #{0} ...", processing++);
         var manufacturer = new Manufacturer();
         var manufacturerName = manufacturerXml.Element("manufacturer-name");
         if (manufacturerName != null)
         {
             if (!contex.Manufacturers.Any(m => m.Name == manufacturerName.Value))
             {
                 contex.Manufacturers.Add(new Manufacturer()
                 {
                     Name = manufacturerName.Value
                 });
                 contex.SaveChanges();
                 Console.WriteLine("Created manufacturer: {0}", manufacturerName.Value);
             }
             else
             {
                 Console.WriteLine("Existing manufacturer: {0}", manufacturerName.Value);
                 manufacturer = contex.Manufacturers.FirstOrDefault(m => m.Name == manufacturerName.Value);
             }
         }
         var xLenses = manufacturerXml.XPathSelectElements("lenses/lens");
         foreach (var lensXml in xLenses)
         {
             var model = lensXml.Attribute("model");
             var type = lensXml.Attribute("type");
             var price = lensXml.Attribute("price");
             var lens = contex.Lenses.FirstOrDefault(l => l.Model == model.Value);
             if (lens != null)
             {
                 Console.WriteLine("Existing lens: {0}", model.Value);
             }
             else
             {
                 contex.Lenses.Add(new Lens()
                 {
                     Model = model.Value,
                     Type = type.Value,
                     Price = (price != null) ? decimal.Parse(price.Value) : default(decimal?),
                     ManufacturerId = manufacturer.Id
                 });
                 contex.SaveChanges();
                 Console.WriteLine("Created lens: {0}", model.Value);
             }
         }
         Console.WriteLine();
     }
 }
        static void Main()
        {
            var context = new PhotographySystemEntities();
            var cameras = context.Cameras.Select(c => new
            {
                manufacturerName = c.Manufacturer.Name,
                model = c.Model
            })
            .OrderBy(c => c.manufacturerName)
            .ThenBy(c => c.model)
            .ToList();

            foreach (var camera in cameras)
            {
                Console.WriteLine(camera.manufacturerName + " " + camera.model);
            }
        }
        static void Main()
        {
            var db = new PhotographySystemEntities();

            var photographs = db.Photographs.Select(p => new
            {
                title = p.Title,
                categoryName = p.Category.Name,
                link = p.Link,
                megaPixel = p.Equipment.Camera.Megapixels,
                equipmentName = p.Equipment.Camera.Manufacturer.Name + " " + p.Equipment.Camera.Model,
                lensPrice = p.Equipment.Lens.Price,
                lensName = p.Equipment.Camera.Manufacturer.Name + " " + p.Equipment.Lens.Model

            })
            .OrderBy(p => p.title)
            .ToList();

            var root = new XElement("photographs");
            foreach (var photograph in photographs)
            {
                var photographXml = new XElement("photograph");
                photographXml.Add(new XAttribute("title", photograph.title));
                photographXml.Add(new XElement("category", photograph.categoryName));
                photographXml.Add(new XElement("link", photograph.link));
                var equipmentXml = new XElement("equipment");
                equipmentXml.Add(new XElement("camera", photograph.equipmentName, new XAttribute("megapixels", photograph.megaPixel)));
                if (photograph.lensPrice.HasValue)
                {
                    equipmentXml.Add(new XElement("lens", photograph.lensName, new XAttribute("price", photograph.lensPrice)));
                }
                else
                {
                    equipmentXml.Add(new XElement("lens", photograph.lensName));
                }

                photographXml.Add(equipmentXml);
                root.Add(photographXml);
            }

            var xmlDoc = new XDocument(root);
            xmlDoc.Save("../../photographs.xml");
        }
        static void Main()
        {
            var db = new PhotographySystemEntities();
            var manufacturerAndCamera = db.Manufacturers.Select(m => new
            {
                name = m.Name,
                camera = m.Cameras.Select(c => new
                {
                    c.Model,
                    c.Price
                })
                .OrderBy(c => c.Model)
            })
            .OrderBy(m => m.name)
            .ToList();

            var serializer = new JavaScriptSerializer();
            var json = serializer.Serialize(manufacturerAndCamera);
            File.WriteAllText("../../manufactureres-and-cameras.json", json);
        }