public void InjectConstraintsTo(DetachedDynQuery ddq)
            {
                var from = ddq.Query;

                from.Where("bp.State.ID = 1");

                if (bpc.BlogId.HasValue)
                {
                    from.Where().And(QualifyProperty("Blog.ID") + " = :BlogID");
                    ddq.SetInt32("BlogID", bpc.BlogId.Value);
                }

                if (bpc.CategoryId.HasValue)
                {
                    from.Join(QualifyProperty("Category") + " c");
                    from.Where().And("c.ID = :CategoryID");
                    ddq.SetInt32("CategoryID", bpc.CategoryId.Value);
                }

                if (bpc.UserId.HasValue)
                {
                    from.Where().And(QualifyProperty("BlogUsuser.ID") + " = :UserID");
                    ddq.SetInt32("UserID", bpc.UserId.Value);
                }
            }
            private IDetachedQuery GetQueryWithConstraints(Select selection)
            {
                var result = new DetachedDynQuery(selection);

                InjectConstraintsTo(result);

                return(result);
            }
 public PaginableDynQuery(ISession session, DetachedDynQuery query) : base(query)
 {
     if (session == null)
     {
         throw new ArgumentNullException("session");
     }
     this.session = session;
 }
        protected override IPaginable <Foo> GetPaginableWithLikeRestriction(ISession session)
        {
            var dynq = new From("Foo f");

            dynq.Where("f.Name like :p1");
            var ddq = new DetachedDynQuery(dynq);

            ddq.SetString("p1", "N_%");
            return(new PaginableDynQuery <Foo>(session, ddq));
        }
        public void ToRowCount()
        {
            Select s = new Select("f.Name, f.Description, b.Descriptoin").From("Foo f");

            s.From().Join("f.Bar b");
            Where where = new Where();
            where.And("f.Name like :pName");
            where.And("b.Asociated > :pAso");
            s.From().SetWhere(where);
            OrderBy order = new OrderBy().Add("b.Asociated", true);

            order.Add("f.Name");
            s.From().SetOrderBy(order);

            DetachedDynQuery ddq = new DetachedDynQuery(s);
            DetachedQuery    drc = (DetachedQuery)ddq.TransformToRowCount();

            Assert.AreEqual("select count(*) from Foo f join f.Bar b where ((f.Name like :pName) and (b.Asociated > :pAso))",
                            drc.Hql);
        }
        protected override IPaginable <Foo> GetAllPaginable(ISession session)
        {
            var ddq = new DetachedDynQuery(new From("Foo"));

            return(new PaginableDynQuery <Foo>(session, ddq));
        }