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); }