예제 #1
0
        public async Task <Concert> InsertConcertAsync(Concert newConcert, List <Band> bands)
        {
            bands.ForEach(b =>
            {
                var concertBand = new ConcertBand {
                    Band = _context.Bands.Find(b.Id), Concert = newConcert
                };
                newConcert.ConcertBands.Add(concertBand);
            });

            _context.Concerts.Add(newConcert);
            await _context.SaveChangesAsync();

            return(newConcert);
        }
예제 #2
0
        public async Task UpdateConcertAsync(int concertId, Concert updatedConcert, List <Band> bands)
        {
            //Lekérdezzük a módosítandó koncertet, ki szeretnénk törölni belőle az együtteseket
            var oldConcert = await _context.Concerts
                             .Include(c => c.ConcertBands)
                             .SingleOrDefaultAsync(c => c.Id == concertId);

            if (oldConcert != null) //Ha megvan
            {
                //Lekérdezzük a hozzá tartozó ConcertBandeket
                var concertBands = oldConcert.ConcertBands.Where(cb => cb.ConcertId == concertId).ToList();
                foreach (var concertBand in concertBands)
                {
                    //És kitöröljük őket
                    oldConcert.ConcertBands.Remove(concertBand);
                }

                await _context.SaveChangesAsync(); //Elmentjük a törlést

                //Leállítjuk a koncert követését, enélkül nem lehetne a koncert objektumra frissíteni
                _context.Entry(oldConcert).State = EntityState.Detached;
            }

            updatedConcert.Id = concertId;
            bands.ForEach(b =>
            {
                //Hozzáadjuk az új koncerthez az összes együttes ConcertBand objektumát
                var concertBand = new ConcertBand {
                    Band = _context.Bands.Find(b.Id), Concert = updatedConcert
                };
                updatedConcert.ConcertBands.Add(concertBand);
            });

            var entry = _context.Concerts.Attach(updatedConcert);

            entry.State = EntityState.Modified; //Attach nem teszi magától Modified-ba
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (await _context.Concerts.SingleOrDefaultAsync(c => c.Id == concertId) == null)
                {
                    throw new EntityNotFoundException($"Nem található Id={concertId} koncert!");
                }
            }
        }