I am trying to do $expand on queryable end point and getting this error.
Object of type 'System.Linq.EnumerableQuery`1[System.Web.Http.OData.Query.Expressions.SelectExpandBinder+SelectAllAndExpand`1[pc_process_api.Models.Task]]' cannot be converted to type 'System.Collections.Generic.IEnumerable`1[pc_process_api.Models.Task]'.
The object are defined as many to many using the TaskComponent table. My Code:
[EnableQuery(MaxExpansionDepth = 5, PageSize = 10)]
[Route("api/tasks")]
public IQueryable<Task> GetTasks()
{
return db.Tasks.AsNoTracking().AsQueryable();
}
public class Task
{
public Task()
{
TaskComponents = new List<TaskComponent>();
}
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long TaskId { get; set; }
[Required]
public string Name { get; set; }
public virtual ICollection<TaskComponent> TaskComponents { get; set; }
}
public class TaskComponent
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long TaskComponentId { get; set; }
[Required]
public long SequenceNumber { get; set; }
[MinLength(3, ErrorMessage = "Min Length is 3 chars"), MaxLength(50, ErrorMessage = "Max Length is 50 chars")]
public string DisplayName { get; set; }
[Required]
public long TaskId { get; set; }
public Task Task { get; set; }
[Required]
public long ComponentId { get; set; }
public Component Component { get; set; }
}
public class Component
{
public Component()
{
TaskComponents = new List<TaskComponent>();
}
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long ComponentId { get; set; }
[Required]
public string Name { get; set; }
public ICollection<TaskComponent> TaskComponents { get; set; }
public string Code { get; set; }
}
the url i am trying is http://localhost:12346/api/tasks?$expand=TaskComponents
Please suggest.