private void UpdateEntity(IBreedEntryEntity entity) { using (var ctx = new HappyDogShowContext()) { DogShow selectedShow = ctx.DogShows.Where(i => i.ID == entity.ShowId).First(); BreedEntry foundEntity = ctx.BreedEntries.Where(d => d.ID == entity.Id).Include(b => b.EnteredClasses).First(); if (foundEntity != null) { if (entity.Classes != null) { foreach (var i in entity.Classes) { // existing class entry if (i.ID > 0) { if (i.IsSelected) { // nothing to do, keep it } else { var foundEntries = ctx.BreedClassEntries.Where(ec => ec.ID == i.ID); if (foundEntries.Count() == 1) { ctx.BreedClassEntries.Remove(foundEntries.First()); } } } // potential new class entry else { if (i.IsSelected) { BreedClass breedClass = ctx.BreedClasses.Where(k => k.ID == i.BreedClassID).First(); foundEntity.EnteredClasses.Add(new BreedClassEntry() { Class = breedClass }); } else { // ignore } } } } foundEntity.Show = selectedShow; foundEntity.Number = entity.Number; ctx.SaveChanges(); } } }
private int CreateEntity(IBreedEntryEntity entity) { int newid = -1; using (var ctx = new HappyDogShowContext()) { DogRegistration selectedDog = ctx.DogRegistrations.Where(i => i.ID == entity.Dog.Id).First(); DogShow selectedShow = ctx.DogShows.Where(i => i.ID == entity.ShowId).First(); List <BreedClassEntry> enteredClasses = new List <BreedClassEntry>(); foreach (var i in entity.Classes.Where(j => j.IsSelected)) { BreedClass breedClass = ctx.BreedClasses.Where(k => k.ID == i.BreedClassID).First(); enteredClasses.Add(new BreedClassEntry() { Class = breedClass });; } if (string.IsNullOrEmpty(entity.Number)) { var usednumbers = ctx.BreedEntries.Where(be => be.Show.ID == entity.ShowId).Select(be => be.Number).ToList().Distinct().ToList(); if (usednumbers.Count > 0) { int temp; int max = usednumbers.Select(n => int.TryParse(n, out temp) ? temp : 0).Max(); if (max > 0) { entity.Number = (max + 1).ToString(); } } else { entity.Number = ""; } } BreedEntry newEntity = new BreedEntry() { Dog = selectedDog, EnteredClasses = enteredClasses, Show = selectedShow, Number = entity.Number }; ctx.BreedEntries.Add(newEntity); ctx.SaveChanges(); newid = newEntity.ID; } return(newid); }