Początkujący pytanie jestem pewien:Dodaj ograniczenia, aby łączyć za pomocą CreateCriteria w NHibernate
próbuję zrobić sprzężenia między 2 stoliki i ograniczyć wynik w tym samym czasie jak ten:
var bookings = session.CreateCriteria<Booking>("p")
.CreateCriteria("p.BookingLocations", JoinType.InnerJoin)
.Add(Restrictions.Eq("p.BookingLocations.locationID", locationId))
.SetMaxResults(30)
.List<Booking>();
pojawia się błąd: nie można rozwiązać właściwość: BookingLocations.locationID od: Rezerwacja
widzę, że Booking.BookingLocati on zawiera wiele rekordów, ponieważ istnieje jeden do wielu relacji między rezerwacją a BookingLocation, ale nie jestem pewien, czy to jest przyczyna problemu.
myślę, czy to, że muszę zrobić coś takiego:
.Add(Restrictions.Eq("p.BookingLocations.first().locationID", locationId))
... ale bez wątpienia, że nie będzie działać;)
Klasy
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; }
}
Mapowania
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; }
}
Właśnie tego potrzebowałem, dzięki! – iKode