0

我的模型看起来像:

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)
   {

   }
}
4

1 回答 1

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;
}
于 2013-07-31T19:14:56.833 回答