Quantcast
Channel: ASPNETWebStack Issue Tracker Rss Feed
Viewing all articles
Browse latest Browse all 7215

Closed Issue: QueryableAttribute doesn't work with IEnumerable property [343]

$
0
0
Models:
public class Movie
{
public int MovieId { get; set; }
public IEnumerable<Person> Actors { get; set; }
public IEnumerable<string> Tags { get; set; }
public Person Director { get; set; }
}
public class Person
{
public int PersonId { get; set; }
public string Name { get; set; }
public IEnumerable<string> Tags { get; set; }
public Person Spouse { get; set; }
public int Age { get; set; }
}

Actions:
[Queryable]
public IEnumerable<Movie> GetMovies()

Request:
Request = {Method: GET, RequestUri: 'http://localhost:9022/api/FilterTests/GetMovies?$filter=any(Actors, Name eq 'Kevin')', Version: 1.1, Content: System.Net.Http.ByteArrayContent, Headers:
{
Connection: Keep-Alive
Host: localhost:9022
}}

Throw exception:
System.Collections.Generic.KeyNotFoundException occurred
Message=The given key was not present in the dictionary.
Source=mscorlib
StackTrace:
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
InnerException:

mscorlib.dll!System.Collections.Generic.Dictionary<string,Microsoft.Data.Edm.IEdmType>.this[string].get(string key)
> System.Web.Http.OData.dll!System.Web.Http.OData.Builder.EdmTypeBuilder.CreateStructuralTypeBody(Microsoft.Data.Edm.Library.EdmStructuredType type, System.Web.Http.OData.Builder.IStructuralTypeConfiguration config) Line 82 C#
System.Web.Http.OData.dll!System.Web.Http.OData.Builder.EdmTypeBuilder.CreateEntityTypeBody(Microsoft.Data.Edm.Library.EdmEntityType type, System.Web.Http.OData.Builder.IEntityTypeConfiguration config) Line 97 C#
System.Web.Http.OData.dll!System.Web.Http.OData.Builder.EdmTypeBuilder.CreateEdmTypeBody(System.Web.Http.OData.Builder.IStructuralTypeConfiguration config) Line 66 C#
System.Web.Http.OData.dll!System.Web.Http.OData.Builder.EdmTypeBuilder.GetEdmTypes() Line 33 C#
System.Core.dll!System.Linq.Enumerable.OfTypeIterator<Microsoft.Data.Edm.IEdmStructuredType>.MoveNext()
System.Core.dll!System.Linq.Enumerable.ToDictionary<Microsoft.Data.Edm.IEdmStructuredType,string,Microsoft.Data.Edm.IEdmStructuredType>(System.Collections.Generic.IEnumerable<Microsoft.Data.Edm.IEdmStructuredType> source, System.Func<Microsoft.Data.Edm.IEdmStructuredType,string> keySelector, System.Func<Microsoft.Data.Edm.IEdmStructuredType,Microsoft.Data.Edm.IEdmStructuredType> elementSelector, System.Collections.Generic.IEqualityComparer<string> comparer)
System.Core.dll!System.Linq.Enumerable.ToDictionary<Microsoft.Data.Edm.IEdmStructuredType,string>(System.Collections.Generic.IEnumerable<Microsoft.Data.Edm.IEdmStructuredType> source, System.Func<Microsoft.Data.Edm.IEdmStructuredType,string> keySelector)
System.Web.Http.OData.dll!System.Web.Http.OData.Builder.EdmModelHelperMethods.BuildEdmModel(string containerNamespace, string containerName, System.Collections.Generic.IEnumerable<System.Web.Http.OData.Builder.IStructuralTypeConfiguration> entityTypeConfigurations, System.Collections.Generic.IEnumerable<System.Web.Http.OData.Builder.IEntitySetConfiguration> entitySetConfigurations) Line 68 C#
System.Web.Http.OData.dll!System.Web.Http.OData.Builder.ODataModelBuilder.GetEdmModel() Line 149 C#
System.Web.Http.OData.dll!System.Web.Http.OData.Builder.ODataConventionModelBuilder.GetEdmModel() Line 115 C#
System.Web.Http.OData.dll!System.Web.Http.HttpActionDescriptorExtensions.GetEdmModel.AnonymousMethod__0(object _) Line 31 C#
mscorlib.dll!System.Collections.Concurrent.ConcurrentDictionary<object,object>.GetOrAdd(object key, System.Func<object,object> valueFactory)
System.Web.Http.OData.dll!System.Web.Http.HttpActionDescriptorExtensions.GetEdmModel(System.Web.Http.Controllers.HttpActionDescriptor actionDescriptor, System.Type entityClrType) Line 26 C#
System.Web.Http.OData.dll!System.Web.Http.QueryableAttribute.OnActionExecuted(System.Web.Http.Filters.HttpActionExecutedContext actionExecutedContext) Line 132 C#
System.Web.Http.dll!System.Web.Http.Filters.ActionFilterAttribute.CallOnActionExecuted(System.Web.Http.Controllers.HttpActionContext actionContext, System.Net.Http.HttpResponseMessage response, System.Exception exception)
System.Web.Http.dll!System.Web.Http.Filters.ActionFilterAttribute.System.Web.Http.Filters.IActionFilter.ExecuteActionFilterAsync.AnonymousMethod__0(System.Net.Http.HttpResponseMessage response)
System.Web.Http.dll!System.Threading.Tasks.TaskHelpersExtensions.Then<System.Net.Http.HttpResponseMessage,System.Net.Http.HttpResponseMessage>.AnonymousMethod__40(System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> t)
System.Web.Http.dll!System.Threading.Tasks.TaskHelpersExtensions.ThenImpl<System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage>,System.Net.Http.HttpResponseMessage>(System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> task, System.Func<System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage>,System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage>> continuation, System.Threading.CancellationToken cancellationToken, bool runSynchronously)
System.Web.Http.dll!System.Threading.Tasks.TaskHelpersExtensions.Then<System.Net.Http.HttpResponseMessage,System.Net.Http.HttpResponseMessage>(System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage> task, System.Func<System.Net.Http.HttpResponseMessage,System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage>> continuation, System.Threading.CancellationToken cancellationToken, bool runSynchronously)
System.Web.Http.dll!System.Web.Http.Filters.ActionFilterAttribute.System.Web.Http.Filters.IActionFilter.ExecuteActionFilterAsync(System.Web.Http.Controllers.HttpActionContext actionContext, System.Threading.CancellationToken cancellationToken, System.Func<System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage>> continuation)
System.Web.Http.dll!System.Web.Http.ApiController.InvokeActionWithActionFilters.AnonymousMethod__13()
System.Web.Http.dll!System.Web.Http.ApiController.ExecuteAsync.AnonymousMethod__1()
System.Web.Http.dll!System.Threading.Tasks.TaskHelpersExtensions.Then<System.Net.Http.HttpResponseMessage>.AnonymousMethod__31(System.Threading.Tasks.Task t)
System.Web.Http.dll!System.Threading.Tasks.TaskHelpersExtensions.ThenImpl<System.Threading.Tasks.Task,System.Net.Http.HttpResponseMessage>(System.Threading.Tasks.Task task, System.Func<System.Threading.Tasks.Task,System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage>> continuation, System.Threading.CancellationToken cancellationToken, bool runSynchronously)
System.Web.Http.dll!System.Threading.Tasks.TaskHelpersExtensions.Then<System.Net.Http.HttpResponseMessage>(System.Threading.Tasks.Task task, System.Func<System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage>> continuation, System.Threading.CancellationToken cancellationToken, bool runSynchronously)
System.Web.Http.dll!System.Web.Http.ApiController.ExecuteAsync.AnonymousMethod__0()
System.Web.Http.dll!System.Web.Http.ApiController.ExecuteAsync(System.Web.Http.Controllers.HttpControllerContext controllerContext, System.Threading.CancellationToken cancellationToken)
System.Web.Http.dll!System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsyncInternal(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
System.Web.Http.dll!System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
System.Net.Http.dll!System.Net.Http.HttpMessageInvoker.SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
System.Web.Http.dll!System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
System.Net.Http.dll!System.Net.Http.DelegatingHandler.SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
System.Web.Http.dll!System.Web.Http.HttpServer.SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
System.Web.Http.SelfHost.dll!System.Web.Http.SelfHost.HttpSelfHostServer.ProcessRequestContext(System.Web.Http.SelfHost.HttpSelfHostServer.ChannelContext channelContext, System.ServiceModel.Channels.RequestContext requestContext)
System.Web.Http.SelfHost.dll!System.Web.Http.SelfHost.HttpSelfHostServer.ReceiveRequestContextComplete(System.IAsyncResult result)
System.Web.Http.SelfHost.dll!System.Web.Http.SelfHost.HttpSelfHostServer.OnReceiveRequestContextComplete(System.IAsyncResult result)

Comments: No longer repro

Viewing all articles
Browse latest Browse all 7215

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>