32
I'm bad at math but I kind get idea what cartesian product is.
Here is my situation (simplified):
public class Project{
public IList<Partner> Partners{get;set;}
}
public class Partner{
public IList<PartnerCosts> Costs{get;set;}
public IList<Address> Addresses{get;set;}
}
public class PartnerCosts{
public Money Total{get;set;}
}
public class Money{
public decimal Amount{get;set;}
public int CurrencyCode{get;set;}
}
public class Address{
public string Street{get;set;}
}
My aim is to effectively load entire Project.
Problem of course is:
- If I try to eager load partners and their costs, query returns gazillion rows
- If I lazy load Partner.Costs, db gets request spammed (which is a bit faster than first approach)
As I read, common workaround is to use MultiQueries, but I kind a just don't get it.
So I'm hoping to learn through this exact example.
How to effectively load whole Project?
P.s. I'm using NHibernate 3.0.0.
Please, do not post answers with hql or string fashioned criteria api approaches.