Exemplo n.º 1
0
        public async Task DataServiceActionQueryExecuteAsyncCancellationTokenTest()
        {
            var      source  = new CancellationTokenSource();
            var      context = this.CreateWrappedContext <DefaultContainer>().Context;
            Customer c1      = new Customer {
                CustomerId = 11, Name = "customerOne"
            };

            context.AddToCustomer(c1);
            Customer c2 = new Customer {
                CustomerId = 22, Name = "customerTwo"
            };

            context.AddToCustomer(c2);
            await context.SaveChangesAsync();

            AuditInfo auditInfo = new AuditInfo()
            {
                ModifiedDate = new DateTimeOffset()
            };

            DataServiceQuerySingle <Customer> customer          = context.Customer.ByKey(11);
            DataServiceActionQuery            getComputerAction = customer.ChangeCustomerAuditInfo(auditInfo);

            Task response() => getComputerAction.ExecuteAsync(source.Token);

            source.Cancel();
            var exception = await Assert.ThrowsAsync <OperationCanceledException>(response);

            Assert.Equal("The operation was canceled.", exception.Message);

            this.EnqueueTestComplete();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Executes the specified query.
        /// </summary>
        /// <typeparam name="T">The type.</typeparam>
        /// <param name="query">The query.</param>
        /// <returns>A collection</returns>
        public static IEnumerable <T> Execute <T>(DataServiceActionQuery <T> query)
        {
            var watch = new Stopwatch();

            watch.Start();
            try
            {
                var result = query.ExecuteAsync().Result;
                watch.Stop();
                LogInfo($"     <.><.> ExecuteAction<T>: {query.RequestUri}: {watch.ElapsedMilliseconds}ms");

                return(result);
            }
            catch (DataServiceQueryException ex)
            {
                LogError($"Exception {ex.InnerException.Message} on Execute:{query.RequestUri}", typeof(Proxy));
                throw;
            }
            catch (AggregateException ex)
            {
                foreach (var e in ex.InnerExceptions)
                {
                    LogError($"Exception {e.GetType()}: {e.Message} on Execute:{query.RequestUri}", typeof(Proxy));
                }

                throw;
            }
            catch (Exception ex)
            {
                LogError($"Exception {ex.GetType()}: {ex.Message} Execute:{query.RequestUri}", typeof(Proxy));
                throw;
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Executes the specified query.
        /// </summary>
        /// <typeparam name="T">The type.</typeparam>
        /// <param name="query">The query.</param>
        /// <returns>A collection</returns>
        public static IEnumerable <T> Execute <T>(DataServiceActionQuery <T> query)
        {
            var watch = new Stopwatch();

            watch.Start();

            try
            {
                var result = query.ExecuteAsync().Result;

                watch.Stop();
                Console.WriteLine($"     <.><.> ExecuteAction<T>: {query.RequestUri}: {watch.ElapsedMilliseconds}ms");

                return(result);
            }
            catch (DataServiceQueryException ex)
            {
                WriteColoredLine(ConsoleColor.Red, $"Exception {ex.InnerException.Message} on Execute:{query.RequestUri}");
                throw;
            }
            catch (AggregateException ex)
            {
                WriteColoredLine(ConsoleColor.Red, $"Exception {ex.InnerException.Message} on Execute:{query.RequestUri}");
                throw;
            }
            catch (Exception ex)
            {
                WriteColoredLine(ConsoleColor.Red, $"Unknown Exception {ex.Message} Execute:{query.RequestUri}");
                throw;
            }
        }
        public async Task DelayQueryOnDerivedSingleton()
        {
            this.testClientContext             = this.CreateWrappedContext <InMemoryEntitiesPlus>().Context;
            this.testClientContext.MergeOption = MergeOption.OverwriteChanges;

            //Query Singleton
            var publicCompanyQuery = this.testClientContext.PublicCompanyPlus;
            var publicCompany      = await publicCompanyQuery.GetValueAsync();

            Assert.True(publicCompanyQuery.RequestUri.OriginalString.EndsWith("/PublicCompany"));
            Assert.NotNull(publicCompany);

            //Query Property On Derived Singleton
            var stockExchangeQuery = this.testClientContext.PublicCompanyPlus.Select(p => (p as PublicCompanyPlus).StockExchangePlus);
            var stockExchange      = await stockExchangeQuery.GetValueAsync();

            Assert.True(stockExchangeQuery.RequestUri.OriginalString.EndsWith("/PublicCompany/Microsoft.Test.OData.Services.ODataWCFService.PublicCompany/StockExchange"));
            Assert.NotNull(stockExchange);

            //Query Navigation Property on Dervied Singleton
            var assetsQuery = this.testClientContext.PublicCompanyPlus.CastToPublicCompanyPlus().AssetsPlus;
            var assets      = await assetsQuery.ExecuteAsync();

            Assert.True(assetsQuery.RequestUri.OriginalString.EndsWith("/PublicCompany/Microsoft.Test.OData.Services.ODataWCFService.PublicCompany/Assets"));
            Assert.NotNull(assets);

            //Filter Navigation Property on Dervied Singleton
            assetsQuery = this.testClientContext.PublicCompanyPlus.CastToPublicCompanyPlus().AssetsPlus.Where(a => a.NamePlus != "Temp") as DataServiceQuery <AssetPlus>;
            assets      = await assetsQuery.ExecuteAsync();

            Assert.True(assetsQuery.RequestUri.OriginalString.EndsWith("/PublicCompany/Microsoft.Test.OData.Services.ODataWCFService.PublicCompany/Assets?$filter=Name ne 'Temp'"));
            Assert.NotNull(assets);

            //Projection
            var publicCompany2Query = this.testClientContext.PublicCompanyPlus.Select(
                p =>
                new PublicCompanyPlus()
            {
                AddressPlus       = p.AddressPlus,
                LabourUnionPlus   = (p as PublicCompanyPlus).LabourUnionPlus,
                StockExchangePlus = (p as PublicCompanyPlus).StockExchangePlus
            });
            var publicCompany2 = await publicCompany2Query.GetValueAsync();

            Assert.True(publicCompany2Query.RequestUri.OriginalString.EndsWith(
                            "/PublicCompany?$expand=Microsoft.Test.OData.Services.ODataWCFService.PublicCompany/LabourUnion&$select=Address,Microsoft.Test.OData.Services.ODataWCFService.PublicCompany/StockExchange"));
            Assert.NotNull(publicCompany2.AddressPlus);
            Assert.NotNull(publicCompany2.LabourUnionPlus);
            Assert.NotNull(publicCompany2.StockExchangePlus);

            //Expand Navigation Property on Derived Singleton
            var publicCompany3Query = this.testClientContext.PublicCompanyPlus.Expand(p => (p as PublicCompanyPlus).LabourUnionPlus);

            publicCompany = await publicCompany3Query.GetValueAsync();

            Assert.True(publicCompany3Query.RequestUri.OriginalString.EndsWith("/PublicCompany?$expand=Microsoft.Test.OData.Services.ODataWCFService.PublicCompany/LabourUnion"));
            Assert.NotNull(((PublicCompanyPlus)publicCompany).LabourUnionPlus);

            //Action Bound on Navigation Property on Derived Singleton, return void
            DataServiceActionQuery changeLabourUnionAction = this.testClientContext.PublicCompanyPlus.CastToPublicCompanyPlus().LabourUnionPlus.ChangeLabourUnionNamePlus("changedLabourUnion");
            await changeLabourUnionAction.ExecuteAsync();

            Assert.True(changeLabourUnionAction.RequestUri.OriginalString.EndsWith("/PublicCompany/Microsoft.Test.OData.Services.ODataWCFService.PublicCompany/LabourUnion/Microsoft.Test.OData.Services.ODataWCFService.ChangeLabourUnionName"));
            var labourUnion = (await this.testClientContext.PublicCompanyPlus.Select(p => (p as PublicCompanyPlus).LabourUnionPlus).GetValueAsync()).NamePlus;

            Assert.Equal("changedLabourUnion", labourUnion);
        }
Exemplo n.º 5
0
        public void DelayQueryOnDerivedSingleton()
        {
            TestClientContext.MergeOption = MergeOption.OverwriteChanges;

            //Query Singleton
            var publicCompanyQuery = TestClientContext.PublicCompanyPlus;
            var publicCompany      = publicCompanyQuery.GetValue();

            Assert.IsTrue(publicCompanyQuery.RequestUri.OriginalString.EndsWith("/PublicCompany"));
            Assert.IsNotNull(publicCompany);

            //Query Property On Derived Singleton
            var stockExchangeQuery = TestClientContext.PublicCompanyPlus.Select(p => (p as PublicCompanyPlus).StockExchangePlus);
            var stockExchange      = stockExchangeQuery.GetValue();

            Assert.IsTrue(stockExchangeQuery.RequestUri.OriginalString.EndsWith("/PublicCompany/Microsoft.Test.OData.Services.ODataWCFService.PublicCompany/StockExchange"));
            Assert.IsNotNull(stockExchange);

            //Query Navigation Property on Dervied Singleton
            var assetsQuery = TestClientContext.PublicCompanyPlus.CastToPublicCompanyPlus().AssetsPlus;
            var assets      = assetsQuery.Execute();

            Assert.IsTrue(assetsQuery.RequestUri.OriginalString.EndsWith("/PublicCompany/Microsoft.Test.OData.Services.ODataWCFService.PublicCompany/Assets"));
            Assert.IsNotNull(assets);

            //Filter Navigation Property on Dervied Singleton
            assetsQuery = TestClientContext.PublicCompanyPlus.CastToPublicCompanyPlus().AssetsPlus.Where(a => a.NamePlus != "Temp") as DataServiceQuery <AssetPlus>;
            assets      = assetsQuery.Execute();
            Assert.IsTrue(assetsQuery.RequestUri.OriginalString.EndsWith("/PublicCompany/Microsoft.Test.OData.Services.ODataWCFService.PublicCompany/Assets?$filter=Name ne 'Temp'"));
            Assert.IsNotNull(assets);

            //Projection
            var publicCompany2Query = TestClientContext.PublicCompanyPlus.Select(
                p =>
                new PublicCompanyPlus()
            {
                AddressPlus       = p.AddressPlus,
                LabourUnionPlus   = (p as PublicCompanyPlus).LabourUnionPlus,
                StockExchangePlus = (p as PublicCompanyPlus).StockExchangePlus
            });
            var publicCompany2 = publicCompany2Query.GetValue();

            Assert.IsTrue(publicCompany2Query.RequestUri.OriginalString.EndsWith(
                              "/PublicCompany?$expand=Microsoft.Test.OData.Services.ODataWCFService.PublicCompany/LabourUnion&$select=Address,Microsoft.Test.OData.Services.ODataWCFService.PublicCompany/StockExchange"));
            Assert.IsNotNull(publicCompany2.AddressPlus);
            Assert.IsNotNull(publicCompany2.LabourUnionPlus);
            Assert.IsNotNull(publicCompany2.StockExchangePlus);

            //Expand Navigation Property on Derived Singleton
            var publicCompany3Query = TestClientContext.PublicCompanyPlus.Expand(p => (p as PublicCompanyPlus).LabourUnionPlus);

            publicCompany = publicCompany3Query.GetValue();
            Assert.IsTrue(publicCompany3Query.RequestUri.OriginalString.EndsWith("/PublicCompany?$expand=Microsoft.Test.OData.Services.ODataWCFService.PublicCompany/LabourUnion"));
            Assert.IsNotNull((publicCompany as PublicCompanyPlus).LabourUnionPlus);

            //Action Bound on Navigation Property on Derived Singleton
            DataServiceActionQuery changeLabourUnionAction = TestClientContext.PublicCompanyPlus.CastToPublicCompanyPlus().LabourUnionPlus.ChangeLabourUnionNamePlus("changedLabourUnion");

            changeLabourUnionAction.Execute();
            Assert.IsTrue(changeLabourUnionAction.RequestUri.OriginalString.EndsWith("/PublicCompany/Microsoft.Test.OData.Services.ODataWCFService.PublicCompany/LabourUnion/Microsoft.Test.OData.Services.ODataWCFService.ChangeLabourUnionName"));
            var labourUnion = TestClientContext.PublicCompanyPlus.Select(p => (p as PublicCompanyPlus).LabourUnionPlus).GetValue().NamePlus;

            Assert.AreEqual("changedLabourUnion", labourUnion);
        }
Exemplo n.º 6
0
        private void CallPlaceOrdersFromActionQuery(ICollection <Order> orders)
        {
            var query = new DataServiceActionQuery <Order>(dsc, "http://service-root/Customers(0)/Microsoft.Test.OData.Services.ODataWCFService.PlaceOrders", new BodyOperationParameter("orders", orders));

            query.Execute();
        }