1
我有一對夫婦的數據類:NHibernate的選擇N + 1和遞歸
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,有幾個孩子(這又帶着小孩等)各他們有幾個屬性和照片。 根據某個RecordGroup,我需要所有的DataRecords包括Children,Properties和Fotos。
在原始SQL中這樣做是一個簡單的語句,只有幾個連接,但是當我嘗試使用linq和nhibernate來做到這一點時,會導致1500選擇N + 1語句和巨大的減速。
我已經嘗試過.FetchMany(x => x.Children);
怎麼可能拿到1查詢中1 Recordgroup的整體「的Datatree」?
在此先感謝!