Zapis dwóch modeli do bazy

Zapis dwóch modeli do bazy
Michał Warmuz
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 253
0

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

Kopiuj
            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();
                }
            }
WeiXiao
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5227
1

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

L2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 16
1

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

Kopiuj
SaveChangesAsync()
Sunnyline2
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 58
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.