2014-01-07 28 views
0

我正在實施像ODataServiceSample如何從odata服務返回嵌套的實體模型

它說,你可以查詢等作爲

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; } 
} 

但可以查詢部分,第一個請求主類

Container ctx = new Container(); 
foreach (var productFamily in ctx.ProductFamilies) 
    Console.WriteLine("\t{0}-{1}: {2}", productFamily.ID, productFamily.Name, productFamily.Description); 

的子類第二次請求嵌套實體模型

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); 
    } 

如何選擇一個查詢(請求)中的所有數據?

回答

0

要擴大相關實體,請將Expand添加到您的查詢。在你的情況下,它可能是這樣的:

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); 
    } 
} 
相關問題