LINQ渴望加载|找不到方法“包含”

时间:2015-04-16 08:49:22

标签: c# linq

我正在尝试使用LINQ进行一些急切的加载。问题是它无法识别方法“包含”......

            var bbs = (from bbo in db.BuildByOffers
                   where bbo.offerID == offerID
                   select bbo.BuildingsBlock).Include("deliverable");

我添加了这个命名空间

using System.Data.Entity;

产生编译错误:

  

System.Linq.IQueryable'没有   包含'Include'的定义,没有扩展方法'Include'   接受第一个类型的参数   'System.Linq.IQueryable'可以   发现(您是否缺少using指令或程序集引用?)

查询是一个只返回BuildingBlock列表的方法。 我的实际问题是,当我调用此方法并在列表中循环时,当我尝试“Buildingblock.deliverable.description”时,它无法正常工作。 我刚刚做了这个

Deliverable deli = buildingblock.Deliverable;
deli.description;

我没有解释我的问题这么好,对不起

谢谢你的帮助!

4 个答案:

答案 0 :(得分:3)

ObjectQuery<T>可以使用包含here msdn。

我建议你在dbset上应用Include方法,如下所示:

var bbs = (from bbo in db.BuildByOffers.Include("BuildingsBlock").Include("BuildingsBlock.deliverable")
               where bbo.offerID == offerID
               select bbo.BuildingsBlock)

答案 1 :(得分:2)

Include方法在DbQuery<T>上定义,并作为IQueryable<T>的扩展方法。

您需要导入System.Data.Entity命名空间,以便编译器识别该扩展方法。

<强>可是...

这里真正的问题是你在错误的地方呼叫Include,在进一步投射之前,你需要在来源Include上致电DbSet<T>

var bbs = (from bbo in db.BuildByOffers.Include("deliverable")
           where bbo.offerID == offerID
           select bbo.BuildingsBlock);

答案 2 :(得分:1)

尝试在代码中添加using System.Data.Objects;

答案 3 :(得分:0)

在致电IQueryable<T>之前将其投放到Include。像这样:

var bbs = (from bbo in db.BuildByOffers
           where bbo.offerID == offerID
           select bbo.BuildingsBlock).AsQueryable().Include("deliverable");