У меня есть пара классов данных:
public class RecordGroup
{
public virtual DataRecord RootDataRecord;
}
public class DataRecord
{
public virtual string Name { get; set; }
public virtual RecordGroup RecordGroup { get; set; }
public virtual IList<DataRecord> Children { get; set; }
public virtual DataRecord Parent { get; set; }
public virtual IList<DataProperty> DataProperties { get; set; }
public virtual IList<Foto> Fotos { get; set; }
}
public class DataProperty
{
public virtual string Name { get; set; }
public virtual string Value { get; set; }
public virtual IList<Foto> Fotos { get; set; }
}
public class Foto
{
public virtual string Name { get; set; }
public virtual byte[] Data { get; set; }
}
Итак, 1 RecordGroup «подключен» к нескольким DataRecords, имеет несколько дочерних элементов (которые снова получили дочерние элементы и т. Д.), Каждый из которых имеет несколько свойств.и фото.Мне нужны все DataRecords, включая Children, Properties и Fotos в соответствии с определенной RecordGroup.
Выполнение этого в сыром SQL - это простое утверждение с несколькими объединениями, но когда я пытаюсь сделать это с помощью linq и nhibernate, это приводит кв 1500 Выберите N + 1 операторов и огромное замедление.
Я уже пробовал .FetchMany( x => x.Children );
Как можно получить все "дерево данных" 1 группы записей в 1 запросе?
Заранее спасибо !!!!