有效地构建linq查询

时间:2013-08-12 03:34:44

标签: c# asp.net asp.net-mvc linq entity-framework

我有多个表格,例如

[Item]          [Items_Categorys]                [Categorys]  [Item_SubItem]
-Id              -Id                             -Id          -Id
-Title           -Item_ID [FK: Item]             -Text        -Title
-Description     -Category_Id [FK: Categorys]                 -Item_Id [FK:Items]
-Image

所以我想把它放到如果它们进入Items / {item_id}页面,它会将项目,它的类别,子项目等添加到视图中。我创建了一个LocalModel,它保存了Categorys,Substitems等的IEnumerables。我的问题是什么是命令linq sql查询一次获取所有这些信息的最佳方法。目前,我只是为每个表使用了一些for语句并将它们存储到变量中,然后将这些变量放入我的LocalModel中以发送到页面。

1 个答案:

答案 0 :(得分:1)

据推测,您已经定义了类Item,如下所示:

class Item
{
    .....
    public virtual ICollection<SubItem> SubItems { get; set; }
    public virtual ICollection<Category> Categories { get; set; }
}

因此,为了加载SubItemsCategories,您可以使用Include方法:

var item = dbContext.Items.Include(i => i.SubItems)
                          .Include(i => i.Categories)
                          .SingleOrDefault(i => i.Id = id);

还要确保你有:

using System.Data.Entity;

为了将Include与lambda风格一起使用。