public void Save(City city) { using (var db = GetDbContext()) { Entities.CityEntity dbCity; if (city.Id != Guid.Empty) { dbCity = db.Cities.SingleOrDefault(g => g.Id == city.Id); if (dbCity == null) { throw new Exception("Region could not be found"); } dbCity.Locations.Clear(); } else { dbCity = new Entities.CityEntity { Id = Guid.NewGuid(), CreatedBy = city.CreatedBy, CreatedOn = DateTime.UtcNow }; city.Id = dbCity.Id; city.CreatedOn = dbCity.CreatedOn; db.Cities.Add(dbCity); dbCity.Locations = new Collection <Entities.LocationEntity>(); } dbCity.Name = city.Name; dbCity.UpdatedBy = city.UpdatedBy; dbCity.UpdatedOn = DateTime.UtcNow; city.UpdatedOn = dbCity.UpdatedOn; foreach (var location in city.Locations) { var dbLocation = db.Locations.SingleOrDefault(l => l.Id == location.Id); if (dbLocation != null) { dbCity.Locations.Add(dbLocation); } } db.SaveChanges(); } }
public static City MapToCity(Entities.CityEntity dbCity) { if (dbCity == null) { return(null); } return(new City { Id = dbCity.Id, Name = dbCity.Name, CreatedBy = dbCity.CreatedBy, CreatedOn = dbCity.CreatedOn, UpdatedBy = dbCity.UpdatedBy, UpdatedOn = dbCity.UpdatedOn, Locations = dbCity.Locations.Select(MapToLocation).ToList() }); }