2010-06-09 6 views
2

DTF 역할을하는 POCO에 EF Entities를 매핑하는 문제를 해결하려고합니다.EFv1 매핑 1 to many many to POCOs

내 데이터베이스에는 제품 및 카테고리라고하는 두 개의 테이블이 있습니다. 제품은 하나의 카테고리에 속하며 하나의 카테고리에는 많은 제품이 포함될 수 있습니다. 내 EF 엔티티 이름은 efProduct 및 efCategory입니다. 각 엔터티에는 efProduct와 efCategory 사이에 적절한 탐색 속성이 있습니다. p.Category이 유형이기 때문에

내 마시고 개체는하지만 형식 불일치 오류가

public class Product 
{ 
    public string Name { get; set; } 
    public int ID { get; set; } 
    public double Price { get; set; } 
    public Category ProductType { get; set; } 
} 

public class Category 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public List<Product> products { get; set; } 
} 

내가

public IQueryable<Product> GetProducts() 
    { 
     return from p in ctx.Products 
       select new Product 
       { 
        ID = p.ID, 
        Name = p.Name, 
        Price = p.Price 
        ProductType = p.Category 
       }; 
    } 

같은 것을 할 수 있어요 제품의 목록을 간단합니다 efCategory. 이 문제를 어떻게 해결할 수 있습니까? 즉, 어떻게 p.Category를 Type Category로 변환 할 수 있습니까?

나는 제품 목록이 c.Products 내가 .NET EF 알고

는 POCO에 대한 지원을 추가 않은 EntityCollection에게 있습니다 유형의 제품들로하기 때문에

 return from c in ctx.Categories 
       where c.ID == id 
       select new Category 
       { 
        ID = c.ID, 
        Name = c.Name, 
        ProductList = c.Products; 
       }; 

내가 불일치를받을 수 있나요 마찬가지로

하지만, .NET 3.5 SP1을 사용해야합니다. Category를 들어

답변

4
return from p in ctx.Products 
      select new Product 
      { 
       ID = p.ID, 
       Name = p.Name, 
       Price = p.Price 
       ProductType = new Category 
       { 
        ID = p.Category.ID, 
        Name = p.Category.Name // etc. 
       } 
      }; 

은 당신이 할 :

return from c in ctx.Categories 
      where c.ID == id 
      select new Category 
      { 
       ID = c.ID, 
       Name = c.Name, 
       ProductList = from p in c.Products 
           select new Product 
           { 
            ID = p.ID, 
            Name = p.Name, 
            Price = p.Price 
           } 
      }; 
+0

감사합니다! 카테고리를 반환하는 방법에 대한 예를 들어 주시겠습니까? 여기서 제품은 목록 입니다. 여기서 efCategory는 EntityCollection 입니까? 이를 반영하기 위해 질문을 업데이트했습니다. – Scott

+0

확인; 나는 그것을위한 예제를 추가했다. –

+0

하지만 EF 모델을 내 모델로 "변환"할 수있는 장소를 만들고 싶다면 어떻게해야할까요? 예 : 'ctx.Categories에서 c에서 선택 c.ToPoco();'이것은 L2S와는 잘 동작하지만 EF에서는 발생하지 않기 때문에 "LINQ to Entities"메소드를 인식하지 못합니다 "......"메소드를 사용할 수 없습니다 상점 표현으로 변환 " –