0

私のモデルは次のようになります。

City
 CityBlocks
   Houses

したがって、都市には多くの都市ブロックがあり、各都市ブロックには多くの家があります。

特定のページに、表示したいハウス ID のリストがあります。

このページは City オブジェクトを想定しており、ループして市区町村、住宅の順に表示します。

私が恐れていることの 1 つは、遅延読み込みのために、家の 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 に答える