2014-01-07 13 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); 
    } 
}