Загрузка полного графика из Sql с использованием LINQ - PullRequest
1 голос
/ 11 апреля 2009

Предположим, у нас есть класс Menu с SubMenus (который является тем же типом Menu, поэтому может иметь SubMenus и Items) и Items (который имеет другой тип), и мы сохранили их в двух таблицах (одна для меню и одна для предметов). Есть ли способ загрузить полный график класса Menu (все его подменю и элементы), используя LINQ to SQL?

1 Ответ

0 голосов
/ 11 апреля 2009

Если вы правильно определите отношения в SQL, LINQToSQL должен вернуть вам все меню / элементы одним запросом к меню. Однако это не вернет его для использования в качестве графика, а для перечисления меню (со связанными меню и элементами). Вам нужно будет перебрать это перечисление и построить график самостоятельно.

С другой стороны, вы можете сделать что-то вроде этого:

var roots = db.Menus.Where( m => !m.SubMenus.Count == 0 );

Тогда roots будет набором базовых меню. Этого может быть достаточно, если вы не собираетесь выполнять какие-либо алгоритмы анализа графов на нем, а намереваетесь только пройти его сверху вниз, чтобы создать компоненты графического интерфейса.

...