public async Task BuildingExpandBuilderTenantExpandCityOrderByBuilderNameSkip3Take1NoCount() { string query = "/corebuilding?$skip=4&$top=1&$expand=Builder($expand=City),Tenant&$orderby=Name desc,Identity"; ODataQueryOptions <CoreBuilding> options = ODataHelpers.GetODataQueryOptions <CoreBuilding> ( query, serviceProvider, serviceProvider.GetRequiredService <IRouteBuilder>() ); Test ( await Get <CoreBuilding, TBuilding> ( query, options ) ); void Test(ICollection <CoreBuilding> collection) { Assert.Null(options.Request.ODataFeature().TotalCount); Assert.Equal(1, collection.Count); Assert.Equal("London", collection.First().Builder.City.Name); Assert.Equal("One L1", collection.First().Name); } }
private async Task <ICollection <TModel> > Get <TModel, TData>(string query, ODataQueryOptions <TModel> options = null) where TModel : class where TData : class { return(await DoGet ( serviceProvider.GetRequiredService <IMapper>(), serviceProvider.GetRequiredService <IDataContext>() )); async Task <ICollection <TModel> > DoGet(IMapper mapper, IDataContext context) { return(await context.Set <TData>().GetAsync ( mapper, options ?? ODataHelpers.GetODataQueryOptions <TModel> ( query, serviceProvider, serviceProvider.GetRequiredService <IRouteBuilder>() ), new QuerySettings { ODataSettings = new ODataSettings { HandleNullPropagation = HandleNullPropagationOption.False } } )); } }
public async Task BuildingExpandBuilderTenantExpandCityFilterOnNestedNestedPropertyWithCount() { string query = "/corebuilding?$top=5&$expand=Builder($expand=City),Tenant&$filter=Builder/City/Name eq 'Leeds'&$count=true"; ODataQueryOptions <CoreBuilding> options = ODataHelpers.GetODataQueryOptions <CoreBuilding> ( query, serviceProvider, serviceProvider.GetRequiredService <IRouteBuilder>() ); Test ( await Get <CoreBuilding, TBuilding> ( query, options ) ); void Test(ICollection <CoreBuilding> collection) { Assert.Equal(2, options.Request.ODataFeature().TotalCount); Assert.Equal(2, collection.Count); Assert.Equal("Leeds", collection.First().Builder.City.Name); } }