Вопрос новичка, я уверен:
Я пытаюсь объединить 2 таблицы и одновременно ограничить результат следующим образом:
var bookings = session.CreateCriteria<Booking>("p")
.CreateCriteria("p.BookingLocations", JoinType.InnerJoin)
.Add(Restrictions.Eq("p.BookingLocations.locationID", locationId))
.SetMaxResults(30)
.List<Booking>();
Я получаю ошибку:
Не удалось разрешить свойство: BookingLocations.locationID из: Бронирование
Я вижу, что Booking.BookingLocation содержит много записей, поскольку между Booking и BookingLocation существует отношение один ко многим, но я не уверен, является ли это причиной проблемы.
Полагаю, если бы это было так, мне нужно было бы сделать что-то вроде:
.Add(Restrictions.Eq("p.BookingLocations.first().locationID", locationId))
... но, несомненно, это не сработает;)
Классы
public class Booking
{
public virtual int Id { get; set; }
public virtual Int32 bookingID { get; set; }
public virtual Int32 bookingAdminID { get; set;
}
public class BookingLocation
{
public virtual int Id { get; set; }
public virtual Int32 bookingID { get; set; }
public virtual Int32 locationID { get; set; }
}
Отображения
public BookingMap()
{
Table("Bookings");
Id(x => x.Id).Column("ID");
Map(x => x.bookingID).Column("BookingID");
Map(x => x.bookingAdminID).Column("BookingAdminID");
}
public class BookingLocation
{
public virtual int Id { get; set; }
public virtual Int32 bookingID { get; set; }
public virtual Int32 locationID { get; set; }
}