2016-05-23 23 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