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");
}
}