private static void CreateLensesIfNotExist(PhotographyContext context, IEnumerable<XElement> xLenses, Manufacturer manufacturer) { foreach (var xLens in xLenses) { var lensModel = xLens.Attribute("model").Value; var lensType = xLens.Attribute("type").Value; var lensPrice = xLens.Attribute("price"); var lens = context.Lenses.FirstOrDefault(x => x.Model == lensModel); if (lens != null) { Console.WriteLine("Existing lens: {0}", lensModel); } else { lens = new Lens { Model = lensModel, Type = lensType, Price = lensPrice != null ? decimal.Parse(lensPrice.Value) : default(decimal?), ManufacturerId = manufacturer.Id }; context.Lenses.Add(lens); context.SaveChanges(); Console.WriteLine("Created lens: {0}", lensModel); } } }
private static Manufacturer CreateManufacturerIfNotExists(PhotographyContext context, XElement xManufacturer) { Manufacturer manufacturer = null; var xElementManufacturerName = xManufacturer.Element("manufacturer-name"); if (xElementManufacturerName != null) { var manufacturerName = xElementManufacturerName.Value; manufacturer = context.Manufacturers.FirstOrDefault(x => x.Name == manufacturerName); if (manufacturer != null) { Console.WriteLine("Existing manufacturer: {0}", manufacturerName); } else { manufacturer = new Manufacturer { Name = manufacturerName, }; context.Manufacturers.Add(manufacturer); context.SaveChanges(); Console.WriteLine("Created manufacturer: {0}", manufacturerName); } } return manufacturer; }
private static void ProcessRequest(EquipmentRequest request) { var context = new PhotographyContext(); var manufacturer = context.Manufacturers.FirstOrDefault(x => x.Name == request.Manufacturer); var cameraIds = context.Cameras .Where(x => x.ManufacturerId == manufacturer.Id) .Select(x => x.Id) .ToList(); var lensIds = context.Lenses .Where(x => x.ManufacturerId == manufacturer.Id) .Select(x => x.Id) .ToList(); var rnd = new Random(); for (int i = 0; i < request.GenerateCount; i++) { var equipment = new Equipment(); var lensRand = rnd.Next(lensIds.Count); var cameraRand = rnd.Next(cameraIds.Count); equipment.LensId = lensIds[lensRand]; equipment.CameraId = cameraIds[cameraRand]; 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: {0} (Camera: {1} - Lens: {2})", manufacturer.Name, equipmentDb.Camera.Model, equipmentDb.Lens.Model); } }