古いバージョンの Entity Framework を長い間使用しているプロジェクトがありますが、(最初にデータベースを使用して) データベース スキーマを更新する必要があったため、Visual Studio 2013 は私を EF 5 にアップグレードすることにしました (現在はアップグレードしました)。 EDMX ファイルを変更したときに EF 6) に。
以前使用していたエンティティ フレームワークでは、遅延読み込みは機能していないように見えましたが、コレクションまたはオブジェクトで .Load() を呼び出してデータベースから読み込むことができました。
たとえば、これは古い EF で機能します。
public ICollection<CategoryItem> LoadedCategoryItems
{
get
{
CategoryItems.Load();
return CategoryItems;
}
}
EF 5/6 では、CategoryItems のカウントが 0 になるため、遅延読み込みが機能しないようです。
public ICollection<CategoryItem> LoadedCategoryItems
{
get
{
return CategoryItems;
}
}
これは、次のようなことをする以外にロードを強制する方法ではないようです:
database.CategoryItems.Load();
どういうわけかプリロードすることで回避できますが、データベースに多対多の関係があり、この方法でプリロードする方法がわからないため、非常に行き詰まり、それ以上進むことができません。
クラスのコードは edmx ファイルによって作成された t4 テンプレートによって生成されるため、間違いなく仮想です。
public virtual HashSet<CategoryItem> CategoryItems { get; set; }
オブジェクトを含むクラスは動的プロキシであり、遅延読み込みがオンになっています。
だから、遅延読み込みが機能しない理由や、それをデバッグして理由を見つける方法がわかりませんか?
どうすれば何が起こっているのかを知ることができますか?
ありがとう、ステファン