Zapis dwóch modeli do bazy

0

Cześć. Mam do was pytanie bo chciałbym zapisać rezerwację wraz z gośćmi i tak to wygląda kod jest poprawny ?

            var item = await dbContext.Reservations.SingleOrDefaultAsync(x => x.Id == reservation.Id);

            if(item == null)
            {
                dbContext.Reservations.Add(reservation);
                dbContext.SaveChanges();

                foreach (var guest in guests)
                {
                    dbContext.Guests.Add(guest);
                    dbContext.SaveChanges();

                    var reservationGuest = new GuestReservation(guest.Id, reservation.Id);

                    dbContext.GuestReservations.Add(reservationGuest);
                    dbContext.SaveChanges();
                }
            }
1

jak tych guestów będzie 50, to 100(+1) razy zrobisz zapis? ;)

1

Poza pętlą daj zapis do bazy i użyj

SaveChangesAsync()
1

Ciężko będzie zapisać coś źle przy użyciu ORMa ale żeby było nieoptymalnie i wolno to już dużo prościej.
Czemu sprawdzasz czy jakaś rezerwacja istnieje za pomocą id?

btw
Nie musisz dodawać każdego gościa pojedynczo - możesz użyć metody AddRange(items).
Jak rezerwacja zawiera odwołania do gosci czy do innych modeli możesz je wypełnić i zapisać za jednym razem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1