Another sprint finished (although with the amount of other stuff I've been doing lately, a "crawl" may be a better description), so time for brief update.
This one doesn't really add any visible functional improvements, rather I've been concentrating on improving the interaction between the Linq provider and the NHibernate core. So what has changed? Firstly, the Linq expressions now tie into the NHibernate HQL Query cache correctly. So running a query for the second (and subsequent) time results in a cache hit for the NH query plan, resulting in considerably less processing taking place prior to us actually hitting the database.
Secondly, and vital for the first to be useful, automatic parameterisation of queries now takes place. By this, I mean that a query such as:
from c in Customers where c.Address.City = "London"
now generates HQL of:
select c from Customers c where c.Address.City = :p1
which in turn generates parameterised SQL that gets cached within the database (at least, it does for SQL Server)
Hence, a subsequent query of
from c in Customers where c.Address.City = "Madrid"
will result in cache hits right through the chain, and so should give great performance. Back to getting more queries working tomorrow.