Как оптимизировать LINQ-to-SQL для рекурсивных запросов?

У меня есть следующая таблица SQL:

ObjectTable -------------------------------------------------- | ID | Name | Order | ParentID | | int PK | nvarchar(50) | int | int FK | 

ObjectTable.ParentID – это поле с ObjectTable.ParentID значением, связанное с идентификатором другой записи объекта. LINQ-to-SQL генерирует класс, который выглядит так:

  public class DbObject{ int ID { get; set; } string Name { get; set; } int Order { get; set; } int? ParentID { get; set; } DbObject Parent { get; set; } EntitySet<DbObject> ChildObjects { get; set; } } 

Когда я загружаю экземпляр DbObject , мне нужно иметь возможность рекурсивно обращаться к дочерним объектам, чтобы я мог записывать данные в иерархический объект JSON.

в нашем случае мы создали хранимые процедуры с CTE и помещаем их в конструктор l2s, и они работают как любая другая таблица, за исключением того, что они ведут себя как метод, а не свойство, и до сих пор мы не испытывали никаких проблем с этим.