我的模型看起来像:
City
CityBlocks
Houses
因此,一个城市可以拥有许多城市街区,每个城市街区都可以拥有许多房屋。
在特定页面上,我有一个我想要显示的房屋ID列表。
该页面需要一个City对象,然后循环显示城市街区,然后显示房屋。
我害怕的一件事是,由于懒惰加载,即使我根据房屋ID列表加载东西,它也会因为延迟加载而显示所有城市街区和房屋。
如何避免此页面出现这种情况? (我在使用它时无法全局禁用延迟加载)。
更新
所以这就是我在做的事情:
var repository = new GenericRepository<Home>();
var homes = repository.Get(home => homeIdList.Contains(home.Id),
includeProperties: "CityBlock, CityBlock.City")
.ToList();
City city = homes.Select(h => h.CityBlock.City).Distinct().FirstOrDefault();
但它不起作用。现在,当我在城市上空时,它会加载所有内容:
@foreach(var block in city.CityBlocks)
{
foreach(var house in block.Houses)
{
}
}
答案 0 :(得分:0)
对于您用于查询的特定上下文实例,禁用“本地”延迟加载:
var context = new MyContext();
context.Configuration.LazyLoadingEnabled = false;
仅对此上下文禁用它。您实例化的下一个上下文将再次启用延迟加载。
修改强>
它也适用于单个查询:
try
{
context.Configuration.LazyLoadingEnabled = false;
// run a query and materialize it here (with .ToList(), or .First(), etc.)
}
finally
{
context.Configuration.LazyLoadingEnabled = true;
}