vurur.NHibernate QueryOver Bir varlığı seçin ve ilgili listeyi almak için çalışıyorum
public class UserRoleMap : ClassMap<UserRole>
{
public UserRoleMap()
{
Id(x => x.Id);
Map(x => x.RoleName);
HasManyToMany(x => x.UsersInRole)
.Inverse()
.LazyLoad()
.Table("UsersInRoles");
}
}
: haritalama aşağıdaki gibidir
SELECT ... FROM UsersInRoles left outer join UserRoles on ... WHERE UserRoles.UserId=?
: şuna benzer ki
SELECT ... FROM UserRoles left outer join UsersInRoles on ...
Ve yüzlerce daha ayrı sorgular: birincisi şey gibidir
Önerinizi denediniz. 1 + 12 sorguları ile sonuçlandı - daha önce daha iyi MUCH, ancak 12 daha az yapmak için bir yolu yok mu? (parti büyüklüğünü arttırmak?) - parti büyüklüğünün maliyeti nedir? Her şey iyiyse, varsayılan olarak ayarlanmış olurdum. Parti boyutu tek çözüm mü? 2 sorguyla sonuçlanan olası bir katılım yok mu? Eğer basit bir SQL ile kendi kendime yazmam gerekirse, 2 sorgunun yeterli olacağını düşünüyorum. Teşekkürler. –
Toplu boyuttan daha iyi bir çözüm varsa, belki emin değilim. Bunun varsayılan olarak açılmamasının nedeni, bu durumun mantıksız bir mantığa aykırı olduğu gerçeğidir: Uninitialize nesnesinin proxy'si bir sürücüdür. Gerektiğinde kendi verileri için doğrudan gider. Parti boyutlandırma, bu SELECTS'ye katılmak için oturumda biraz daha fazla çaba harcar. Her neyse, Toplu boyut tüm * bizim * koleksiyonları ve sınıf eşleştirmeleri üzerindedir. Ve büyük setlerde bile performans inanılmaz –