2014-01-07 2 views
0

ODataServiceSample과 같이 구현 중입니다. odata 서비스에서 중첩 엔티티 모델을 반환하는 방법

그것은 당신이 메인 클래스의 하위 클래스에 대한

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

초 요청을 부분적, 첫 번째 요청을 조회 할 수 있습니다

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

으로하지만, 같은 중첩 된 개체 모델을 조회 할 수 있습니다 말

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); 
    } 
} 
관련 문제