private static Camera GetCamera(CameraDto cameraDto) { // Determine the camera type with reflection: Type cameraType = Assembly .GetAssembly(typeof(Camera)) .GetTypes() .FirstOrDefault(type => type.Name.ToLower() == (cameraDto.Type + "Camera").ToLower()); // All the needed code to create 'CameraDslr' or 'CameraMirrorless' if we use AutoMapper: // Object cameraObject = Mapper.Map(cameraDto, cameraDto.GetType(), cameraType); // return cameraObject as Camera; Camera cameraEntity = new Camera(); if (cameraType?.Name.ToLower() == "dslrcamera") { cameraEntity = new DSLRCamera() { Make = cameraDto.Make, Model = cameraDto.Model, IsFullFrame = cameraDto.IsFullFrame, MinISO = cameraDto.MinISO, MaxISO = cameraDto.MaxISO, MaxShutterSpeed = cameraDto.MaxShutterSpeed }; } else if (cameraType?.Name.ToLower() == "mirrorlesscamera") { cameraEntity = new MirrorlessCamera() { Make = cameraDto.Make, Model = cameraDto.Model, IsFullFrame = cameraDto.IsFullFrame, MinISO = cameraDto.MinISO, MaxISO = cameraDto.MaxISO, MaxVideoResolution = cameraDto.MaxVideoResolution, MaxFrameRate = cameraDto.MaxFrameRate }; } return(cameraEntity); }
private static void ImportCameras(PhotographyContext context) { var json = File.ReadAllText(CamerasParh); var camerasEntity = JsonConvert.DeserializeObject <IEnumerable <CameraDto> >(json); foreach (var camera in camerasEntity) { if (camera.Make == null || camera.Model == null || camera.Type == null || camera.MinIso < 100) { Console.WriteLine("Error. Invalid data provided"); continue; } if (camera.Type == "DSLR") { var newdslrCamera = new DslrCamera { Make = camera.Make, Model = camera.Model, MinIso = camera.MinIso, MaxIso = camera.MaxIso, IsFullFrame = camera.IsFullFrame, MaxShutterSpeed = camera.MaxShutterSpeed, }; try { context.Cameras.Add(newdslrCamera); context.SaveChanges(); } catch (DbEntityValidationException db) { context.Cameras.Remove(newdslrCamera); context.SaveChanges(); } Console.WriteLine($"Successfully imported {camera.Type} {camera.Make} {camera.Model}"); } else { var mirrorlesCamera = new MirrorlessCamera() { Make = camera.Make, Model = camera.Model, MinIso = camera.MinIso, MaxIso = camera.MaxIso, IsFullFrame = camera.IsFullFrame, MaxVideoResolution = camera.MaxVideoResolution, MaxFrameRate = camera.MaxFrameRate }; try { context.Cameras.Add(mirrorlesCamera); context.SaveChanges(); } catch (DbEntityValidationException db) { context.Cameras.Remove(mirrorlesCamera); Console.WriteLine($"Successfully imported {camera.Type} {camera.Make} {camera.Model}"); } } context.SaveChanges(); } }
private static void ImportCameras(UnitOfWork unit) { var json = File.ReadAllText(String.Format(datasetsPath, "cameras")); var camerasDtos = JsonConvert.DeserializeObject <IEnumerable <CameraDTO> >(json); foreach (var cameraDto in camerasDtos) { if (cameraDto.Type == null || cameraDto.Make == null || cameraDto.Model == null || cameraDto.MinISO == null) { Console.WriteLine("Error. Invalid data provided"); continue; } if (cameraDto.Type == "DSLR") { Camera camera = new DSLRCamera { IsFullFrame = cameraDto.IsFullFrame, Make = cameraDto.Make, MaxISO = cameraDto.MaxISO, MaxShutterSpeed = cameraDto.MaxShutterSpeed, MinISO = cameraDto.MinISO, Model = cameraDto.Model }; unit.Cameras.Add(camera); try { unit.Commit(); Console.WriteLine($"Successfully imported {cameraDto.Type} {cameraDto.Make} {cameraDto.Model}"); } catch (DbEntityValidationException dbex) { unit.Cameras.Delete(camera); Console.WriteLine("Error. Invalid data provided"); } } else if (cameraDto.Type == "Mirrorless") { Camera camera = new MirrorlessCamera { IsFullFrame = cameraDto.IsFullFrame, Make = cameraDto.Make, MaxFrameRate = cameraDto.MaxFrameRate, MaxVideoResolution = cameraDto.MaxVideoResolution, MaxISO = cameraDto.MaxISO, MinISO = cameraDto.MinISO, Model = cameraDto.Model }; unit.Cameras.Add(camera); try { unit.Commit(); Console.WriteLine($"Successfully imported {cameraDto.Type} {cameraDto.Make} {cameraDto.Model}"); } catch (Exception) { unit.Cameras.Delete(camera); Console.WriteLine("Error. Invalid data provided"); } } } }