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(); }
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; }