У меня есть такой сценарий:Nhinerbate отложенной загрузки эталонного объекта
class A
{
public virtual int Id { get; set; }
public virtual B Child { get; set; }
}
class B
{
public virtual int Id { get; set; }
}
В отображение класса А, у меня есть ссылка на класс B:
map.Reference(a => a.Child).LazyLoad();
Теперь, когда я делаю что-то вроде:
Session.Query<TypeOfA>().Select(a => a);
Помимо обычного выбора * от ATable, я получаю n выбирает из BTable для каждой строки A. Похоже, что ленивая загрузка не работает.
Мои вопросы:
- Как я сделать LazyLoad работу здесь?
- Могу ли я привести объекты A и объекты B в один запрос?
Спасибо,
@Tom: Это неправда. Существует * anohter * пакетный размер, который можно установить в конфигурации и использовать пакетную обработку ADO.NET. Это делает NH создавать партии при очистке сеанса, для операторов обновления и вставки. Он доступен только для Sql Server. (См. Http://ayende.com/Blog/2006/09/16/BatchingSupportInNHibernate.aspx). Но размер пакета, о котором я говорю, предназначен для запросов и независим от базы данных. – 2010-11-30 06:53:55