2016-05-23 31 views
0

我有三個SQLite的表:的SQLite的EntityFramework多對多DB頭

  1. 兩列類別:ID(PK),名稱
  2. 元素與四列:ID(PK),名稱,描述, imgUrl的,
  3. ElementsCategories兩列:ElementId(FK),類別編號(FK)

** PK =主鍵,FK =外鍵

我創建了ADO.NET模型,我想從數據庫中獲取所有類別。我的類別類看起來是這樣的:

class Category 
{ 
    public long Id { get; set; } 
    public string Name { get; set; } 

    public virtual ICollection<Element> Elements{ get; set; } 
} 

我創建功能:

public List<Category> GetCategories() 
{ 
    List<Category> categories; 

    using (var db = new MyDb()) 
    { 
     categories= db.Categories.Select(p => new Category 
     { 
      Id = p.Id, 
      Name = p.Name, 
      Elements = ???? 
     }).ToList(); 
    } 

    return categories; 
} 

,我不能讓屬於類元素的列表。我只能從ElementsCategories表中獲取元素列表。如何在Category對象中設置Elements to Elements字段的列表?

回答

0

根據你的描述,你已映射結合表(ElementsCategories)作爲一個整體,在這種情況下,您的查詢會是這樣的:

public List<Category> GetCategories() 
{ 
    List<Category> categories; 

    using (var db = new MyDb()) 
    { 
     categories= db.Categories.Select(p => new Category 
     { 
      Id = p.Id, 
      Name = p.Name, 
      Elements = p.ElementsCategories.Select(ec=>ec.Element) 
     }).ToList(); 
    } 

    return categories; 
} 

現在,這是行不通的,如果Category是一個實體類型。我假設你正在展示的Category課程是DTO