I'm implementing like ODataServiceSample.
It say, you can query a nested entity model like as
public class ProductFamily
{
public ProductFamily()
{
Products = new List<Product>();
}
public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual Supplier Supplier { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
but you can query partial, first request for main class
Container ctx = new Container();
foreach (var productFamily in ctx.ProductFamilies)
Console.WriteLine("\t{0}-{1}: {2}", productFamily.ID, productFamily.Name, productFamily.Description);
second request for sub class
private static void Get_ProductFamily_Products()
{
Container ctx = new Container();
var query = ctx.ProductFamilies.Where(p => p.ID == 3).SelectMany(p => p.Products);
foreach (var product in query)
Console.WriteLine("\t{0}-{1}", product.ID, product.Name);
}
How to select all data in one query(request)?
To expand related entities, add Expand
to your query. In your case it might be something like this:
Container ctx = new Container();
foreach (var productFamily in ctx.ProductFamilies.Expand("Products"))
{
Console.WriteLine("\t{0}-{1}: {2}",
productFamily.ID, productFamily.Name, productFamily.Description);
foreach (var product in productFamily.Products)
{
Console.WriteLine("\t\t{0}-{1}",
product.ID, product.Name);
}
}