我们在我们的db中有3个表,每个表都在我们的edmx中有一个实体。为了说明我的问题,想象3个表格:实体框架4.0 - 包括实体 - 急切的加载问题
Table: Make
Fields:
makeID
make
Table: Model
FIelds:
modelID
makeID foreign key
model
Table: Car
carID
modelID foreign key
car
我们的Make,Model和Car实体具有实体模型中的所有导航属性。延迟加载被禁用。我们希望能够将所有吉普大切诺基车都输出到我们的页面。
现在我们有这样的事情在我们的功能之一(C#4.0)
IEnumerable<Make> makeList = (((ObjectSet<Lot>)_modelRepository.GetQuery())
.Include(mk => mk.Models.Where(md => md.model == "Grand Cherokee"))
.Where(mk => mk.make == "Jeep").ToList());
_makeRepository.GetQuery()
返回IQueryable
......我们实现存储库模式
这个查询应该工作正常(避风港没有对它进行测试,但是我们如何才能.Include
车表,以便我们的函数返回Make实体对象,以便模型被填充并且Cars被填充(获取Cars的问题,因为它们没有直接导航财产制造)
我们使用POCO对象。
的目标是有1个函数返回一个制作实体能够做到这一点:
foreach(Make myMake in makeList)
{
Response.Write(myMake.make);
foreach(Model myModel in myMake.Models)
{
Response.Write(myModel.model);
foreach(Car mycar in myModel.Cars)
{
Response.Write(mycar.car);
}
}
}
像这样的事情似乎并不可能,但它就是我们将用于:
IEnumerable<Make> makeList = (((ObjectSet<Lot>)_modelRepository.GetQuery())
.Include(mk => mk.Models.Where(md => md.model == "Grand Cherokee"))
.Include(c => mk.Models.Cars)
.Where(mk => mk.make == "Jeep").ToList());
我也试过在我的edmx中创建一个包含所有这些信息的新实体,这样我就可以查询那个对象,但是我不停地收到错误,指出键必须被映射......我没有将它们映射到映射中选项卡(Visual Studio 2010)...所以我回来试图让查询工作。