Мне нужно привязать все места к конкретному бронированию.

У меня есть такие занятия:

public class Seat
{
    public Guid Id { get; set; }
    public string RowNumber { get; set; }
    public int SeatNumber { get; set; }
}

public class ReservationSeat
{
    public Guid Id { get; set; }
    public Guid ReservationId { get; set; }
    public Guid SeatId { get; set; }

    public Reservation Reservation { get; set; }
    public Seat Seat { get; set; }
}

Я рыскал по форумам в поисках решения.

public static List<Seat> GetSeatsForReservation(Guid reservationId)
{
    using (var db = new EntityContext())
    {
        return db.Seats.Where(s => db.ReservationSeat
                                     .Select(rs => rs.ReservationId)
                                     .Contains(reservationId)).ToList();
    }
}
5
Michael Kirkegaard 13 Май 2016 в 14:00

3 ответа

Лучший ответ

Пытаться:

public static List<Seat> GetSeatsForReservation(Guid reservationId)
    {
        var db= new  EntityContext();
        return (from s in db.ReservationSeat
                where s.ReservationID==Guid
                select s.seat).ToList();
    }
6
Aimnox 13 Май 2016 в 11:07

Получить записи через внешний ключ в другой таблице в Entity Framework 6

Похоже, вы ищете что-то вроде этого:

.Where(s => s.Reservation.Id == reservationId)
0
David 13 Май 2016 в 11:05

Вы не проверяете переменную {{X0}} в своем предикате. Вы в основном запрашиваете у БД любую строку, где «любая строка {{X1}} в БД соответствует идентификатору». Поскольку всегда есть совпадение, все строки в этом предикате будут оцениваться как {{X2}}.

public class Seat
{
    public Guid Id { get; set; }

    public string RowNumber { get; set; }

    public int SeatNumber { get; set; }

    public virtual ICollection<Reservation> Reservations { get; set; }
}

public class Reservation
{
    public Guid Id { get; set; }

    public virtual ICollection<Seat> Seats { get; set; }
}

public static List<Seat> GetSeatsForReservation(Guid reservationId)
{
  List<Seat> result = null;
 using (var db = new EntityContext())
  {
     result = db.Seats.Where(
            s => s.Reservations.Id == reservationId).ToList();
    }
   return result ;
 }`

Примечание: 1. это отношение многие ко многим, вы можете изменить его на 1 ко многим 2. Свойство навигации должно быть объявлено как общедоступное, виртуальное.

0
LLI 13 Май 2016 в 11:41