public TypeMapperVisitor(ODataClient.OdataToEntity.Test.Model.Container container) { _container = container; _navigationPropertyAccessors = new List <LambdaExpression>(); _parameters = new Dictionary <ParameterExpression, ParameterExpression>(); }
private async Task <IList> ExecuteOe <T, TResult>(LambdaExpression lambda, int maxPageSize) { ODataClient.OdataToEntity.Test.Model.Container container = CreateContainer(maxPageSize); var visitor = new TypeMapperVisitor(container) { TypeMap = t => Type.GetType("ODataClient." + t.FullName) }; var call = visitor.Visit(lambda.Body); IQueryable query = GetQuerableOe(container, typeof(T)); Type elementType; if (call.Type.GetTypeInfo().IsGenericType) { elementType = call.Type.GetGenericArguments()[0]; ExecuteQueryFuncAsync <Object> func = ExecuteQueryAsync <Object>; return(await CreateDelegate(elementType, func)(query, call, visitor.NavigationPropertyAccessors)); } else { elementType = typeof(Object); ExecuteQueryFunc <Object> func = ExecuteQueryScalar <Object>; return(CreateDelegate(elementType, func)(query, call)); } }
public static ODataClient.OdataToEntity.Test.Model.Container CreateContainer(int maxPageSize) { ODataClient.OdataToEntity.Test.Model.Container container = ContainerFactory(); if (maxPageSize > 0) { container.BuildingRequest += (s, e) => { e.Headers.Add("Prefer", "odata.maxpagesize=" + maxPageSize.ToString(CultureInfo.InvariantCulture)); } } ; return(container); }
public async Task Initalize() { ODataClient.OdataToEntity.Test.Model.Container container = CreateContainer(0); await container.ResetDb().ExecuteAsync(); await container.ResetManyColumns().ExecuteAsync(); if (!_clear) { AspClient.BatchTest.Add(container); await container.SaveChangesAsync(SaveChangesOptions.BatchWithSingleChangeset); } }
internal static IQueryable GetQuerableOe(ODataClient.OdataToEntity.Test.Model.Container container, Type entityType) { if (entityType == typeof(Category)) { return(container.Categories); } if (entityType == typeof(Customer)) { return(container.Customers); } if (entityType == typeof(OrderItem)) { return(container.OrderItems); } if (entityType == typeof(Order)) { return(container.Orders); } if (entityType == typeof(ManyColumns)) { return(container.ManyColumns); } if (entityType == typeof(ShippingAddress)) { return(container.ShippingAddresses); } if (entityType == typeof(CustomerShippingAddress)) { return(container.CustomerShippingAddress); } if (entityType == typeof(OrderItemsView)) { return(container.OrderItemsView); } if (entityType == typeof(ODataClient.OdataToEntity.Test.Model.Category)) { return(container.Categories); } if (entityType == typeof(ODataClient.OdataToEntity.Test.Model.Customer)) { return(container.Customers); } if (entityType == typeof(ODataClient.OdataToEntity.Test.Model.OrderItem)) { return(container.OrderItems); } if (entityType == typeof(ODataClient.OdataToEntity.Test.Model.Order)) { return(container.Orders); } if (entityType == typeof(ODataClient.OdataToEntity.Test.Model.ManyColumns)) { return(container.ManyColumns); } if (entityType == typeof(ODataClient.OdataToEntity.Test.Model.ShippingAddress)) { return(container.ShippingAddresses); } if (entityType == typeof(ODataClient.OdataToEntity.Test.Model.CustomerShippingAddress)) { return(container.CustomerShippingAddress); } if (entityType == typeof(ODataClient.OdataToEntity.Test.Model.OrderItemsView)) { return(container.OrderItemsView); } throw new InvalidOperationException("unknown type " + entityType.Name); }