Пример #1
0
        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));
        }
Пример #2
0
        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));
        }
Пример #3
0
        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);
        }
Пример #4
0
 protected virtual IWhereFragment buildWhereFragment(MartenExpressionParser parser)
 {
     return(WhereClauses.Count == 1
         ? parser.ParseWhereFragment(Fields, WhereClauses.Single().Predicate)
         : new CompoundWhereFragment(parser, Fields, "and", WhereClauses));
 }