私は次のクエリを持っています:
var MyQuery = from e in ContractContext.Equipments.Include("Manufacturers")
where e.Customers.ID == customer.ID
select e;
そして、すべてが機能し、機器を入手して、Manufacturersテーブルを正しく(熱心に)ロードします。しかし、次の多対多のクエリを実行しようとすると、次のようになります。
var MyQuery = from e in ContractContext.Equipments.Include("Manufacturers")
where e.Customers.ID == customer.ID
from cce in e.ContractEquipments
where cce.Contracts.EndedOn >= DateTime.Today
select e;
ここで、「ContractEquipments」は「Equipments」と「Contracts」の間の多対多のルックアップですが、このクエリを実行すると、Manufacturersテーブルが簡単に読み込まれなくなります。次のことを行わずにこれを修正する方法についてのアイデア:
if (MyEntity.Manufacturers.IsLoaded == false)
MyEntity.ManufacturersReference.Load()
このプロジェクトの実行には何時間もかかります。データベース呼び出しの数を抑えたいと思います。
編集#1:
私もこれを試しましたが成功しませんでした:
var MyQuery = from e in ContractContext.Equipments.Include("Manufacturers")
where e.Customers.ID == customer.ID
join cce in ContractContext.ContractEquipments
on e.ID equals cce.Equipments.ID
where cce.Contracts.EndedOn >= DateTime.Today
select e;