示例#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
        private void VerifyLoadProperty(object entity, string propertyName, WebDataCtxWrapper Context)
        {
            Uri entityUri = null;

            if (Context.TryGetUri(entity, out entityUri))
            {
                Uri  navigationPropertyURI = new Uri(String.Format("{0}/{1}", entityUri.OriginalString, propertyName));;
                Type navPropType           = entity.GetType().GetProperty(propertyName).PropertyType;
                if (navPropType.IsGenericType)
                {
                    navPropType = navPropType.GetGenericArguments()[0];
                }
                WebDataCtxWrapper baselineCOntext = new WebDataCtxWrapper(Context.BaseUri);
                baselineCOntext.Credentials = CredentialCache.DefaultCredentials;
                QueryOperationResponse qoResponse = baselineCOntext.ExecuteOfT(navPropType, navigationPropertyURI) as QueryOperationResponse;
                IEnumerator            enumerator = qoResponse.GetEnumerator();

                while (enumerator.MoveNext())
                {
                    object baselineEntity   = enumerator.Current;
                    Uri    navPropEntityURI = null;
                    if (baselineCOntext.TryGetUri(baselineEntity, out navPropEntityURI))
                    {
                        AstoriaTestLog.IsNotNull(Context.TryGetEntityOfT(navPropType, navPropEntityURI), "Could not find entity in Navigation property ");
                    }
                }
            }
        }
示例#3
0
        protected object ExecuteURI(ResourceType resourceType, string requestURI, WebDataCtxWrapper context)
        {
            IQueryable result = context.ExecuteOfT(resourceType.ClientClrType, new Uri(requestURI, UriKind.RelativeOrAbsolute)).AsQueryable();

            object      entity            = null;
            IEnumerator requestEnumerator = result.GetEnumerator();

            if (requestEnumerator.MoveNext())
            {
                entity = requestEnumerator.Current;
            }
            return(entity);
        }