Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > NHibernate Проблема N+1 запросов


Автор: Karrde 6.3.2012, 12:59
Не могу разобраться с проблемой N+1. существует структура 3-его уровня вложенности(т.е в ней объявлена другая структура, в которой, в свою очередь, ещё одна структура). Всё это имеет отображение в таблицах. 
Запрос на select имеет такой вид: 

Код

ICriteria query = session.CreateCriteria(typeof(GroupInfo)).SetFirstResult(offset);
                        if (recordCount > 0)
                            query = query.SetMaxResults(recordCount);
                        returnList = query.List<GroupInfo>();


Маппинг для этой таблицы выглядит так:
Код

Table("db_Groups");
            Id(x => x.Id).GeneratedBy.Identity().Column("GroupID");
            Map(x => x.Group).Column("GroupName");
            Map(x => x.Description).Column("Description");
            HasMany(x => x.AbonentSet).KeyColumn("GroupID").Cascade.All().Not.LazyLoad().AsSet()


В итоге для того, чтобы считать всю информацию, посылается N+1 запросов. Гуглил, кое-где говорится, что надо сам маппинг менять(добавлять Fetch.Join()), кое-где - к сессии добавлять ещё одно условие. Не помогает. либо так и продолжает считывать кучей запросов, либо выдает эксепшн. 
Заранее благодарю за совет

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)