我正在尝试使用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;
我没有解释我的问题这么好,对不起
谢谢你的帮助!
答案 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");