Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用nHibernate中的CreateCriteria向联接添加限制_Hibernate_Nhibernate_Fluent Nhibernate - Fatal编程技术网

使用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))