internal override WalkedToken Walk(WalkedToken left, WalkedToken right)
        {
            Disjunction crit = new Disjunction();

            crit.Add(left.Criterion);
            crit.Add(right.Criterion);
            return WalkedToken.FromCriterion(crit);
        }
 /// <summary>
 /// </summary>
 /// <param name="session"></param>
 /// <param name="id"></param>
 /// <param name="postName"></param>
 /// <param name="context"></param>
 /// <returns></returns>
 protected override IList GetObject(ISession session, object[] id, string postName, ModelBindingContext context)
 {
     var disJun = new Disjunction();
     foreach (object ids in id)
     {
         disJun.Add(Restrictions.Eq(Projections.Id(), ids));
     }
     return DetachedCriteria.For(EntityType).Add(disJun).GetExecutableCriteria(session).List();
 }
Exemple #3
0
 public static void DisjunctionAddCriterion(NHibernateDisjunction disjunction, string propertyName, object propertyValue)
 {
     if (propertyValue == null)
     {
         disjunction.Add(NHibernateRestrictions.IsNull(propertyName));
     }
     else
     {
         disjunction.Add(NHibernateRestrictions.Eq(propertyName, propertyValue));
     }
 }
 /// <summary>
 /// </summary>
 /// <param name="session"></param>
 /// <param name="searchConditionValue"></param>
 /// <param name="postName"></param>
 /// <param name="context"></param>
 /// <returns></returns>
 protected override IList GetObject(ISession session, object[] searchConditionValue, string postName,
                                    ModelBindingContext context)
 {
     DetachedCriteria cri =
         DetachedCriteria.For(EntityType);
     var disjunction = new Disjunction();
     foreach (object condition in searchConditionValue)
     {
         disjunction.Add(Restrictions.Eq(_propertyName, condition));
     }
     cri.Add(disjunction);
     if (Unique)
     {
         cri.SetFirstResult(0).SetMaxResults(1);
     }
     return cri.GetExecutableCriteria(session).List();
 }
        public static IList<Nomenclature> MatchNomenclaturesBySize(IUnitOfWork uow, ItemsType itemType, EmployeeCard employee)
        {
            if(itemType.WearCategory == null)
            {
                logger.Warn ("Вызван подбор номерклатур по размеру, для типа <{0}>, но в нем не указан вид спецодежды.", itemType.Name);
                return null;
            }

            var query = uow.Session.QueryOver<Nomenclature> ()
                .Where (n => n.Type == itemType);

            if (SizeHelper.HasСlothesSizeStd(itemType.WearCategory.Value))
            {
                var disjunction = new Disjunction();
                var employeeSize = employee.GetSize(itemType.WearCategory.Value);

                if (employeeSize == null || String.IsNullOrEmpty(employeeSize.Size) || String.IsNullOrEmpty(employeeSize.StandardCode))
                {
                    logger.Warn("В карточке сотрудника не указан размер для спецодежды типа <{0}>.", itemType.Name);
                    return null;
                }

                foreach (var pair in SizeHelper.MatchSize (employeeSize, SizeUsePlace.Сlothes))
                {
                    disjunction.Add(
                        Restrictions.And(
                            Restrictions.Eq(Projections.Property<Nomenclature>(n => n.SizeStd), pair.StandardCode),
                            Restrictions.Eq(Projections.Property<Nomenclature>(n => n.Size), pair.Size)
                        ));
                }
                query.Where(disjunction);
                if (SizeHelper.HasGrowthStandart(itemType.WearCategory.Value))
                {
                    var growDisjunction = new Disjunction();
                    var growStds = SizeHelper.GetGrowthStandart(itemType.WearCategory.Value, employee.Sex, SizeUsePlace.Сlothes);
                    foreach (var pair in SizeHelper.MatchGrow (growStds, employee.WearGrowth, SizeUsePlace.Сlothes))
                    {
                        growDisjunction.Add(
                            Restrictions.And(
                                Restrictions.Eq(Projections.Property<Nomenclature>(n => n.WearGrowthStd), pair.StandardCode),
                                Restrictions.Eq(Projections.Property<Nomenclature>(n => n.WearGrowth), pair.Size)
                            ));
                    }

                    query.Where(growDisjunction);
                }
            }

            return query.List ();
        }
 public void AddToDisjunction(Disjunction disjunction)
 {
     disjunction.Add(GetCriterion());
 }
        private void VisitOrElseExpression(BinaryExpression expr)
        {
            criterionStack.Push(new List<ICriterion>());
            Visit(expr.Left);
            Visit(expr.Right);
            IList<ICriterion> ors = criterionStack.Pop();

            var disjunction = new Disjunction();
            foreach (ICriterion crit in ors)
            {
                disjunction.Add(crit);
            }
            CurrentCriterions.Add(disjunction);
        }
        protected override Expression VisitTypeIs(TypeBinaryExpression expr)
        {
            var visitor = new MemberNameVisitor(rootCriteria);
            visitor.Visit(expr);
            string memberName = visitor.MemberName + ".class";

            var metaData = session.SessionFactory.GetClassMetadata(expr.TypeOperand);
            if (metaData.HasSubclasses)
            {
                //make sure to include any subtypes
                var disjunction = new Disjunction();
                foreach (string entityName in ((IEntityPersister)metaData).EntityMetamodel.SubclassEntityNames)
                {
                    var metadata = session.SessionFactory.GetClassMetadata(entityName);
                    disjunction.Add(Property.ForName(memberName).Eq(metadata.GetMappedClass(EntityMode.Poco)));
                }
                visitor.CurrentCriteria.Add(disjunction);
            }
            else
            {
                visitor.CurrentCriteria.Add(Property.ForName(memberName).Eq(expr.TypeOperand));
            }

            return expr;
        }
        public override ICriterion GetCriterion()
        {
            if (_exact != null)
                return Restrictions.Eq(PropertyName, _exact.Value);

            if (_after != null && _before != null)
                return Restrictions.Between(PropertyName, _after.Value, _before.Value);

            if (_after == null && _before == null)
                return null;

            SimpleExpression criterion;
            if (_after != null)
                criterion = Restrictions.Ge(PropertyName, _after.Value);
            else
                criterion = Restrictions.Le(PropertyName, _before.Value);

            if (!_mayBeNull)
                return criterion;

            var disjunction = new Disjunction();
            disjunction.Add(criterion);
            disjunction.Add(Restrictions.IsNull(PropertyName));
            return disjunction;
        }
		public void WhereCondition_Disjunction()
		{
			Session.Save(new Person { Name = "Ascott", FirstName = "Abigail" });
			Session.Save(new Person { Name = "Birchwood", FirstName = "Brandon" });
			Session.Save(new Person { Name = "Cinnamon", FirstName = "Cynthia" });

			var query = Session.QueryOver<Person>();
			var persons = query.Where(p => p.Name == "Ascott" || p.Name == "Birchwood")
							   .List();

			Assert.AreEqual(2, persons.Count);
			query = null;
			persons = null;

			query = Session.QueryOver<Person>();
			persons = query.Where(Restrictions.Disjunction()
											  .Add<Person>(p => p.Name == "Ascott")
											  .Add<Person>(p => p.Name == "Birchwood"))
						   .List();

			Assert.AreEqual(2, persons.Count);
			query = null;
			persons = null;

			var disjunction = new Disjunction();
			disjunction.Add<Person>(p => p.Name == "Ascott");
			disjunction.Add<Person>(p => p.Name == "Birchwood");

			query = Session.QueryOver<Person>();
			persons = query.Where(disjunction)
						   .List();

			Assert.AreEqual(2, persons.Count);
			query = null;
			persons = null;
		}