Предположим, что у нас есть класс меню, у которого есть SubMenus (который является одним и тем же типом меню, поэтому может иметь SubMenus и элементы) и элементы (которые имеют другой тип), и мы сохранили их в двух таблицы (один для меню и один для элементов). Есть ли способ загрузить полный график класса Menu (все его SubMenus и элементы) с использованием LINQ to SQL?Загрузка завершенного графика из Sql с использованием LINQ
1
A
ответ
0
Если вы правильно определяете отношения в SQL, LINQToSQL должен вернуть вам все меню/элементы с одним запросом в меню. Однако это не даст его использовать в качестве графика, а как перечисление меню (со связанными меню и элементами). Вам нужно будет выполнить итерацию по этому перечислению и построить график самостоятельно.
С другой стороны, вы могли бы быть в состоянии сделать что-то вроде этого:
var roots = db.Menus.Where(m => !m.SubMenus.Count == 0);
Тогда roots
будет коллекцией базового меню. Этого может быть достаточно, если вы не намереваетесь выполнять какие-либо алгоритмы анализа графика на нем, но только намерены пересечь его сверху вниз, чтобы построить компоненты GUI.
Я хочу сериализовать полный график в XML-файл с помощью DataContractSerializer, поэтому я думаю, что мне нужно загрузить все объекты. Могу ли я использовать LoadOptions так или иначе, чтобы их загрузить? – mrtaikandi
Если вы хотите сериализовать структуру графика, а не только элементы, я думаю, вам нужно будет построить фактический график. В перечислении вы будете иметь повторяющиеся элементы в родительских/дочерних свойствах для любых общих меню. Проверьте свой DBML - отношения уже могут быть загружены. – tvanfosson
Я хочу сериализовать элементы. – mrtaikandi