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(); }
/// <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; } }
/// <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); }
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); }
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(); }