Hello, we have two problems with the clause ToFuture ().
Our schenario is this:
SQL Server 2008 R2,
C #. NET4.0,
NHibernate 3.2.0.4000

The query that we are looking at is this:
using (var session = GetNhibernateSession()) {
var pratica = session .Query<Pratica>() .Fetch(x => x.Domiciliatario) 
.Fetch(x => x.Procuratore) .ToFuture() .SingleOrDefault(x => x.Id == 
idPratica); 
var praticaClienti = session .Query<Pratica>() .FetchMany(x => 
x.Clienti).ThenFetch(k => k.Soggetto) .ToFuture() .SingleOrDefault(x => 
x.Id == idPratica);
var praticaControParti = session .Query<Pratica>() .FetchMany(x => 
x.Controparti) .ThenFetchMany(x => x.Avvocati) .ToFuture() 
.SingleOrDefault(x => x.Id == idPratica);
var praticaAffidatari = session .Query<Pratica>() .FetchMany(x => 
x.Affidatari) .ToFuture() .SingleOrDefault(x => x.Id == idPratica);
var praticaEventi = session .Query<Pratica>() .FetchMany(x => x.Eventi) 
.ThenFetch(k => k.AttivitaCollegata) .ToFuture() .SingleOrDefault(x => x.Id 
== idPratica);
var praticaAttivita = session .Query<Pratica>() .FetchMany(x => x.Attività) 
.ToFuture() .SingleOrDefault(x => x.Id == idPratica);
var praticaNoteContabili = session .Query<Pratica>() .FetchMany(x => 
x.NoteContabili) .ToFuture() .SingleOrDefault(x => x.Id == idPratica);
var praticaFondoSpese = session .Query<Pratica>() .FetchMany(x => 
x.AccontiFondoSpese) .ToFuture() .SingleOrDefault(x => x.Id == idPratica);
return pratica; 
}

The problems are these:
First, the SQL Profiler we saw that the queries are generated on the 
database as theyare defined rather than optimizing the request as we seem 
to have understood by reading this blog 
http://ayende.com/blog/3979/nhibernate-futures. 
Second, using database with different data, but with the same structure, in 
some casesare generated many more queries, 49, instead of 11.

Tanks in advance.

Reply via email to