public Parent GetByName(string Name)
{
return _session.CreateCriteria<Parent>()
.Add(Restrictions.Eq("Name", Name))
.SetFetchMode("Children", FetchMode.Eager)
.SetResultTransformer(new DistinctRootEntityResultTransformer())
.UniqueResult<Parent>();
}
public ParentDetailVM GetMeAParent(string Name)
{
Parent parent;
using (var tx = _session.BeginTransaction())
{
//This works well, one single query loading
//both parent and children
parent = _parentRepository.GetByName(Name);
//If I include this as suggested by NHProfiler
//it all of the sudden sends a new query for each child
//and a query for the grandchildren collection
tx.Commit();
}
return Mapper.Map<Parent, ParentDetailVM>(parent);
}
Я проверил, чтобы ничто в файлах сопоставления не было настроено на загрузку. Я не могу понять, почему он работает, если я отойду от фиксации транзакции, но в противном случае он выдает N более запросов. Кто-нибудь знает, почему это может произойти?Получение нескольких запросов при совершении транзакции, почему?
Это имеет большой смысл, данные довольно грубые. Я посмотрю на это и посмотрю, что я нахожу. –