NHibernate QueryOver z Fetch w wyniku wielu zapytań sql i trafień db

Próbuję wybrać jednostkę i pobrać powiązaną listę:

    Session.QueryOver<UserRole>()
           .Fetch(x => x.UsersInRole).Eager
           .List();

Co powoduje wiele trafień w bazach danych. Pierwszy to coś w stylu:

 SELECT ... FROM UserRoles
 left outer join UsersInRoles on ...

I setki kolejnych oddzielnych zapytań, które wyglądają mniej więcej tak:

 SELECT ... FROM UsersInRoles
 left outer join UserRoles on ...
 WHERE UserRoles.UserId=?

Mapowanie wygląda następująco:

public class UserRoleMap : ClassMap<UserRole>
{
    public UserRoleMap()
    {
        Id(x => x.Id);
        Map(x => x.RoleName);
        HasManyToMany(x => x.UsersInRole)
        .Inverse()
        .LazyLoad()
        .Table("UsersInRoles");
    }
}

questionAnswers(1)

yourAnswerToTheQuestion