private void UpdateEntity(IChallengeResultCollection <IChallengeResult> entity)
        {
            using (var ctx = new HappyDogShowContext())
            {
                foreach (IChallengeResult result in entity.Results)
                {
                    var foundResults = ctx.HandlerChallengeResults.Where(i => i.ID == result.Id);
                    if (foundResults.Count() == 1)
                    {
                        HandlerChallengeResult foundResult = foundResults.First();
                        foundResult.EntryNumber = result.EntryNumber;
                    }
                }

                ctx.SaveChanges();
            }
        }
        private List <IChallengeResult> GetList <T>(int dogShowId, int classId) where T : IChallengeResult, new()
        {
            List <IChallengeResult> items = new List <IChallengeResult>();

            using (var ctx = new HappyDogShowContext())
            {
                if (classId > 0)
                {
                    var existingData = from r in ctx.HandlerChallengeResults
                                       where r.DogShow.ID == dogShowId && r.HandlerClass.ID == classId
                                       select r;

                    if (existingData.Count() == 0)
                    {
                        List <string> placings = new List <string>();
                        placings.Add("1st");
                        placings.Add("2nd");
                        placings.Add("3rd");
                        placings.Add("4th");

                        var newEntries = from ds in ctx.DogShows.Where(d => d.ID == dogShowId)
                                         from scc in ctx.HandlerClasses
                                         from p in placings
                                         select new
                        {
                            DogShow      = ds,
                            HandlerClass = scc,
                            Placing      = p
                        };

                        foreach (var newEntry in newEntries)
                        {
                            HandlerChallengeResult realEntry = new HandlerChallengeResult()
                            {
                                DogShow      = newEntry.DogShow,
                                HandlerClass = newEntry.HandlerClass,
                                Placing      = newEntry.Placing,
                                EntryNumber  = ""
                            };

                            ctx.HandlerChallengeResults.Add(realEntry);
                        }
                        ctx.SaveChanges();
                    }
                }

                var rawdata = from r in ctx.HandlerChallengeResults
                              where r.DogShow.ID == dogShowId
                              select r;

                if (classId > 0)
                {
                    rawdata = rawdata.Where(r => r.HandlerClass.ID == classId);
                }

                var actualEntries = from r in rawdata
                                    orderby r.Placing
                                    select new T
                {
                    Id          = r.ID,
                    ShowId      = r.DogShow.ID,
                    ShowName    = r.DogShow.Name,
                    Challenge   = r.HandlerClass.Name,
                    EntryNumber = r.EntryNumber,
                    Placing     = r.Placing,
                    Print       = false
                };

                foreach (var entry in actualEntries)
                {
                    items.Add(entry);
                }
            }

            return(items);
        }