Esempio n. 1
0
        protected override ResultOperatorBase CreateResultOperator(ClauseGenerationContext clauseGenerationContext)
        {
            var resultOperator = new FetchManyRequest(RelationMember);

            clauseGenerationContext.AddContextInfo(this, resultOperator);
            return(resultOperator);
        }
        public void Apply_WithExistingFetchManyRequest()
        {
            var request = new FetchManyRequest(_node.RelationMember);

            QueryModel.ResultOperators.Add(request);

            _node.Apply(QueryModel, ClauseGenerationContext);

            Assert.That(QueryModel.ResultOperators.Count, Is.EqualTo(1));
            Assert.That(QueryModel.ResultOperators[0], Is.SameAs(request));
            Assert.That(ClauseGenerationContext.GetContextInfo(_node), Is.SameAs(QueryModel.ResultOperators[0]));
        }
    protected override QueryModel ApplyNodeSpecificSemantics (QueryModel queryModel, ClauseGenerationContext clauseGenerationContext)
    {
      var previousFetchRequest = clauseGenerationContext.GetContextInfo (Source) as FetchRequestBase;
      if (previousFetchRequest == null)
        throw new ParserException ("ThenFetchMany must directly follow another Fetch request.");

      FetchRequestBase innerFetchRequest = new FetchManyRequest (RelationMember);
      innerFetchRequest = previousFetchRequest.GetOrAddInnerFetchRequest (innerFetchRequest);
      clauseGenerationContext.AddContextInfo (this, innerFetchRequest);

      return queryModel;
    }
        public void Clone_WithInnerFetchRequests()
        {
            var innerRequest = new FetchManyRequest(_friendsMember);

            _friendsFetchRequest.GetOrAddInnerFetchRequest(innerRequest);

            var clone       = _friendsFetchRequest.Clone(new CloneContext(new QuerySourceMapping()));
            var innerClones = ((FetchManyRequest)clone).InnerFetchRequests.ToArray();

            Assert.That(innerClones.Length, Is.EqualTo(1));
            Assert.That(innerClones[0], Is.Not.SameAs(innerRequest));
            Assert.That(innerClones[0], Is.InstanceOf(typeof(FetchManyRequest)));
            Assert.That(innerClones[0].RelationMember, Is.SameAs(innerRequest.RelationMember));
        }
        protected override QueryModel ApplyNodeSpecificSemantics(QueryModel queryModel, ClauseGenerationContext clauseGenerationContext)
        {
            var previousFetchRequest = clauseGenerationContext.GetContextInfo(Source) as FetchRequestBase;

            if (previousFetchRequest == null)
            {
                throw new ParserException("ThenFetchMany must directly follow another Fetch request.");
            }

            FetchRequestBase innerFetchRequest = new FetchManyRequest(RelationMember);

            innerFetchRequest = previousFetchRequest.GetOrAddInnerFetchRequest(innerFetchRequest);
            clauseGenerationContext.AddContextInfo(this, innerFetchRequest);

            return(queryModel);
        }
        public void SetUp()
        {
            _visitor    = new TestFetchFilteringQueryModelVisitor();
            _queryModel = ExpressionHelper.CreateQueryModel <Cook> ();

            _distinctResultOperator = new DistinctResultOperator();
            _countResultOperator    = new CountResultOperator();

            _fetchOneRequest  = new FetchOneRequest(typeof(Cook).GetProperty("Substitution"));
            _fetchManyRequest = new FetchManyRequest(typeof(Cook).GetProperty("Assistants"));

            _innerFetchManyRequest = new FetchManyRequest(typeof(Cook).GetProperty("Holidays"));
            _fetchOneRequest.GetOrAddInnerFetchRequest(_innerFetchManyRequest);

            _queryModel.ResultOperators.Add(_distinctResultOperator);
            _queryModel.ResultOperators.Add(_fetchOneRequest);
            _queryModel.ResultOperators.Add(_fetchManyRequest);
            _queryModel.ResultOperators.Add(_countResultOperator);
        }
 protected override ResultOperatorBase CreateResultOperator (ClauseGenerationContext clauseGenerationContext)
 {
   var resultOperator = new FetchManyRequest (RelationMember);
   clauseGenerationContext.AddContextInfo (this, resultOperator);
   return resultOperator;
 }
 public void SetUp()
 {
     _friendsMember       = typeof(Cook).GetProperty("Assistants");
     _friendsFetchRequest = new FetchManyRequest(_friendsMember);
 }