protected override IWhereFragment buildWhereFragment(MartenExpressionParser parser) { if (WhereClauses.Count == 0) { return(_storage.DefaultWhereFragment()); } var where = WhereClauses.Count == 1 ? parser.ParseWhereFragment(Fields, WhereClauses.Single().Predicate) : new CompoundWhereFragment(parser, Fields, "and", WhereClauses); return(_storage.FilterDocuments(null, where)); }
protected override IWhereFragment buildWhereFragment(MartenExpressionParser parser) { // TODO -- this logic is duplicated. Pull it into a helper somewhere. // Find the duplication of DefaultWhereFragment/ FilterDocuments in other places if (WhereClauses.Count == 0) { return(_storage.DefaultWhereFragment()); } var where = WhereClauses.Count == 1 ? parser.ParseWhereFragment(Fields, WhereClauses.Single().Predicate) : new CompoundWhereFragment(parser, Fields, "and", WhereClauses); return(_storage.FilterDocuments(null, where)); }
public void DeleteWhere <T>(Expression <Func <T, bool> > expression) { assertNotDisposed(); var parser = new MartenExpressionParser(Options.Serializer(), Options); var model = MartenQueryParser.Flyweight.GetParsedQuery(Query <T>().Where(expression).As <MartenLinqQueryable <T> >().Expression); var storage = StorageFor <T>(); var whereClauses = model.BodyClauses.OfType <WhereClause>().ToArray(); // This is duplicated logic IWhereFragment where = null; switch (whereClauses.Length) { case 0: where = storage.DefaultWhereFragment(); break; case 1: where = parser.ParseWhereFragment(storage.Fields, whereClauses.Single().Predicate); break; default: where = new CompoundWhereFragment(parser, storage.Fields, "and", whereClauses); break; } where = storage.FilterDocuments(null, where); var deletion = storage.DeleteForWhere(@where); _unitOfWork.Add(deletion); }
protected virtual IWhereFragment buildWhereFragment(MartenExpressionParser parser) { return(WhereClauses.Count == 1 ? parser.ParseWhereFragment(Fields, WhereClauses.Single().Predicate) : new CompoundWhereFragment(parser, Fields, "and", WhereClauses)); }