示例#1
0
        protected void QueryNavProperty(Func <IEdmEntityType, List <string> > getNavPropsLambda)
        {
            ForEachResourceType(
                (resourceType, resourceContainer, workspace) =>
            {
                CreateContext(resourceType, workspace);
                AstoriaTestLog.WriteLine("Querying entityset {0}", resourceContainer.Name);
                IEdmEntityType entityType = DataServiceMetadata.EntityTypes.FirstOrDefault(eType => eType.Name == resourceType.Name);
                KeyExpression keyExp      = workspace.GetRandomExistingKey(resourceContainer);
                if (keyExp != null && (!(resourceContainer is ServiceOperation)))
                {
                    List <KVP> keyExpValues = WebDataCtxWrapper.ConvertKeyExpression(keyExp);
                    foreach (string collNavProperty in getNavPropsLambda(entityType))
                    {
                        AstoriaTestLog.WriteLine("Querying Properties {0}", collNavProperty);
                        try
                        {
                            DataServiceQuery queryWithExpand  = ((DataServiceQuery)CurrentContext.CreateQueryOfT(resourceContainer.Name, resourceType.ClientClrType)).Where(keyExpValues);   //.SelectNavigationProperty(collNavProperty) as DataServiceQuery;
                            IEnumerator enumerateQueryResults = ((IQueryable)queryWithExpand).GetEnumerator();
                            object entity = null;
                            if (enumerateQueryResults.MoveNext())
                            {
                                entity = enumerateQueryResults.Current;
                            }
                            while (enumerateQueryResults.MoveNext())
                            {
                                ;
                            }
                            Uri entityUri = null;
                            CurrentContext.UnderlyingContext.TryGetUri(entity, out entityUri);
                            CurrentContext.Detach(entity);
                            entityUri = new Uri(entityUri.OriginalString + "/" + collNavProperty);

                            var qoREsponse         = CurrentContext.ExecuteOfT(GetResourceType(collNavProperty, resourceType).ClientClrType, entityUri);
                            IEnumerator enumerator = qoREsponse.GetEnumerator();
                            while (enumerator.MoveNext())
                            {
                                ;
                            }
                            if (ChainedFunction != null)
                            {
                                ChainedFunction();
                            }
                        }
                        catch (System.Reflection.TargetInvocationException tiException)
                        {
                            if (!tiException.ToString().Contains("Sequence Contains"))
                            {
                                throw tiException;
                            }
                        }
                    }
                }
            }, false);
        }
示例#2
0
 protected void QueryExpandProperty(Func <IEdmEntityType, List <string> > getNavPropsLambda)
 {
     ForEachResourceType(
         (resourceType, resourceContainer, workspace) =>
     {
         CreateContext(resourceType, workspace);
         AstoriaTestLog.WriteLine("Querying entityset {0}", resourceContainer.Name);
         IEdmEntityType entityType = DataServiceMetadata.EntityTypes.FirstOrDefault(eType => eType.Name == resourceType.Name);
         KeyExpression keyExp      = workspace.GetRandomExistingKey(resourceContainer);
         if (keyExp != null)
         {
             List <KVP> keyExpValues = WebDataCtxWrapper.ConvertKeyExpression(keyExp);
             foreach (string collNavProperty in getNavPropsLambda(entityType))
             {
                 AstoriaTestLog.WriteLine("Expanding Properties {0}", collNavProperty);
                 try
                 {
                     DataServiceQuery queryWithExpand  = ((DataServiceQuery)CurrentContext.CreateQueryOfT(resourceContainer.Name, resourceType.ClientClrType)).Where(keyExpValues).Expand(collNavProperty);
                     IEnumerator enumerateQueryResults = ((IQueryable)queryWithExpand).GetEnumerator();
                     try
                     {
                         while (enumerateQueryResults.MoveNext())
                         {
                             ;
                         }
                     }
                     catch (OptimisticConcurrencyException oException)
                     {
                         AstoriaTestLog.WriteLineIgnore("Failed as per Expand causes etags not to be included." + oException.Message);
                     }
                     if (ChainedFunction != null)
                     {
                         ChainedFunction();
                     }
                 }
                 catch (System.Reflection.TargetInvocationException tiException)
                 {
                     if (!tiException.ToString().Contains("Sequence Contains"))
                     {
                         throw tiException;
                     }
                 }
             }
         }
     }, false);
 }