使用nHibernate中的CreateCriteria向联接添加限制
初学者问题我敢肯定: 我试图在两个表之间进行连接,并同时限制结果,如下所示:使用nHibernate中的CreateCriteria向联接添加限制,hibernate,nhibernate,fluent-nhibernate,Hibernate,Nhibernate,Fluent Nhibernate,初学者问题我敢肯定: 我试图在两个表之间进行连接,并同时限制结果,如下所示: var bookings = session.CreateCriteria<Booking>("p") .CreateCriteria("p.BookingLocations", JoinType.InnerJoin) .Add(Restrictions.Eq("p.BookingLocations.location
var bookings = session.CreateCriteria<Booking>("p")
.CreateCriteria("p.BookingLocations", JoinType.InnerJoin)
.Add(Restrictions.Eq("p.BookingLocations.locationID", locationId))
.SetMaxResults(30)
.List<Booking>();
…但毫无疑问,这是行不通的;)
课程
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; }
}
映射
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; }
}
子标准定义了一个新的范围,即根于BookingLocation的范围。您只需使用
locationID
:
session.CreateCriteria<Booking>("p")
.CreateCriteria("p.BookingLocations", JoinType.InnerJoin)
.Add(Restrictions.Eq("locationID", locationId))
session.CreateCriteria(“p”)
.CreateCriteria(“p.BookingLocations”,JoinType.InnerJoin)
.Add(Restrictions.Eq(“locationID”,locationID))