Ejemplo n.º 1
0
        private static ICriterion CreateDetailExpression(Parameter p)
        {
            if (p.Comparison == Comparison.NotNull)
            {
                return(Subqueries.PropertyIn("ID",
                                             DetachedCriteria.For <ContentDetail>()
                                             .SetProjection(Projections.Property("EnclosingItem.ID"))
                                             .Add(Expression.Eq("Name", p.Name))));
            }
            if (p.Comparison == Comparison.Null)
            {
                return(Subqueries.PropertyNotIn("ID",
                                                DetachedCriteria.For <ContentDetail>()
                                                .SetProjection(Projections.Property("EnclosingItem.ID"))
                                                .Add(Expression.Eq("Name", p.Name))));
            }

            string propertyName = p.Comparison.HasFlag(Comparison.In)
                ? ContentDetail.GetAssociatedEnumerablePropertyName(p.Value as IEnumerable)
                : ContentDetail.GetAssociatedPropertyName(p.Value);

            var subselect = DetachedCriteria.For <ContentDetail>()
                            .SetProjection(Projections.Property("EnclosingItem.ID"))
                            .Add(CreateExpression(propertyName, ContentDetail.ExtractQueryValue(p.Value), p.Comparison, true));

            if (p.Name != null)
            {
                subselect = subselect.Add(Expression.Eq("Name", p.Name));
            }

            return(Subqueries.PropertyIn("ID", subselect));
        }
Ejemplo n.º 2
0
 public virtual void SetParameters(NHibernate.IQuery query, int index)
 {
     for (int i = 0; i < Values.Length; i++)
     {
         query.SetParameter(GetParameterName(index, i), ContentDetail.ExtractQueryValue(Values[i]));
     }
 }
 public override void SetParameters(NHibernate.IQuery query, int index)
 {
     if (this.Name != null)
     {
         query.SetParameter(GetNameParameterName(index), Name);
     }
     query.SetParameter(GetValueParameterName(index), ContentDetail.ExtractQueryValue(Value));
 }
 public void SetParameters(NHibernate.IQuery query, int index)
 {
     if (name != null)
     {
         query.SetParameter(GetNameParameterName(index), name);
     }
     query.SetParameter("lb" + index, ContentDetail.ExtractQueryValue(lowerBound));
     query.SetParameter("ub" + index, ContentDetail.ExtractQueryValue(upperBound));
 }