I'm implementing like ODataServiceSample project
It's says,you can request from client for nested entity :
var query = ctx.ProductFamilies.Where(p => p.ID == 3).SelectMany(p => p.Products);
And server side, support for /ProductFamilies(1)/Products:
ProductFamiliesController : EntitySetController<ProductFamily, int>
{
/// <summary>
/// Support for /ProductFamilies(1)/Products
/// </summary>
[Queryable]
public IQueryable<Product> GetProducts([FromODataUri] int key)
{
return _db.ProductFamilies.Where(pf => pf.ID == key).SelectMany(pf => pf.Products);
}
}
how to do support for /ProductFamilies(1)/Products(1)/BatchNumbers on server side?
You need another EntitySetController for Product and do exactly the same as you did for ProductFamily entity set, i.e.:
ProductsController : EntitySetController<Product, int>
{
/// <summary>
/// Support for /Products(1)/BatchNumbers
/// </summary>
[Queryable]
public IQueryable<BatchNumber> GetBatchNumberss([FromODataUri] int key)
{
return _db.Products.Where(p => p.ID == key).SelectMany(p => p.BatchNumbers);
}
}