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); } } }
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); }
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++; } }
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})"); } }
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(); }
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(); } }