I'm really hitting a brick wall with the new C# based Azure Mobile Services, and it's really simple too :( I can't for the life of me get the query operation to return child property values. I have the todo item of the default project modified like this:
public class TodoItem : EntityData
{
public TodoItem()
{
this.Numbers = new Collection<TodoItemNumbers>(new List<TodoItemNumbers>
{
new TodoItemNumbers{Value = 1},
new TodoItemNumbers{Value = 2},
new TodoItemNumbers{Value = 3},
new TodoItemNumbers{Value = 4},
new TodoItemNumbers{Value = 5},
});
}
public virtual ICollection<TodoItemNumbers> Numbers { get; set; }
public string Text { get; set; }
public bool Complete { get; set; }
}
And then I have the TodoItemNumbers class defined like this:
public class TodoItemNumbers : EntityData
{
private int _value;
public int Value
{
get { return _value; }
set
{
_value = value;
Id = value.ToString();
}
}
public string TodoItemId { get; set; }
}
In the TodoItemController I've overridden the Query method like this
protected override IQueryable<TodoItem> Query()
{
return base.Query().Include(x => x.Numbers);
}
None of this will return the Numbers property when I make a request with Fiddler. In a moment of madness I also modified the Initialize method of the controller to include this:
protected override void Initialize(HttpControllerContext controllerContext)
{
base.Initialize(controllerContext);
myContext context = new myContext();
context.Configuration.LazyLoadingEnabled = false;
context.Configuration.ProxyCreationEnabled = false;
DomainManager = new EntityDomainManager<TodoItem>(context, Request, Services);
}
Note the lazy loading and proxy creation have both been turned off. Does anyone know how to beat this simple scenario? I'm not feeling the good vibes on this one.
Update So as I answered below I was able to get the service to return the data by adding in the $expand to the query. Now however I'm really stuck on getting the client to add that parameter to the request. It's always just returning the base data.
var data = await App.MobileService.GetTable<TodoItem>()
.ToListAsync();
won't return the child properties, and there isn't an Include option on the result type