メニューをロードするために 1 つのデータベース呼び出しを実行しようとしていますが、調査の結果、自己参照テーブルに使用できる熱心なロードがないことに気付きました。現在、次のようになっています。
public ActionResult PopulateHeaderMenu()
{
using (var context = ww.WebObjs.WebDataContext.Get())
{
var menus = from menu in context.MenuCaches
where menu.URL == "MENU" && menu.ParentID == -1
select new MenuModel
{
ID = menu.ID,
Children = from x in menu.Children
select new MenuModel
{
ID = x.ID,
Children = from y in x.Children
select new MenuModel
{
ID = y.ID,
Children = from p in y.Children
select new MenuModel
{
ID = p.ID,
Children = from r in p.Children
select new MenuModel
{
ID =r.ID,
Children = from s in r.Children
select new MenuModel
{
ID =s.ID,
Children = from t in s.Children
select new MenuModel
{
ID = t.ID,
}
}
}
}
}
}
};
var model = menus.First();
return PartialView("_NaviPartial", model);
}
}
これはかなりうまく機能しますが、113 の個別のクエリが生成されます。DataLoadWith() を実行しようとしましたが、自己参照プロパティに対して実行できません。私がここでやろうとしていることを行う別の方法はありますか? 私は間違ったアプローチを取っていますか?
ありがとうございました