|
From: <pa...@us...> - 2011-02-05 22:43:54
|
Revision: 5374
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5374&view=rev
Author: patearl
Date: 2011-02-05 22:43:48 +0000 (Sat, 05 Feb 2011)
Log Message:
-----------
Linq: Support Cacheable before other operators. (NH-2502, thanks to Dean Ward for the fix.)
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Linq/ReWriters/ResultOperatorRewriter.cs
trunk/nhibernate/src/NHibernate.Test/Linq/QueryCacheableTests.cs
Modified: trunk/nhibernate/src/NHibernate/Linq/ReWriters/ResultOperatorRewriter.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Linq/ReWriters/ResultOperatorRewriter.cs 2011-01-30 14:36:08 UTC (rev 5373)
+++ trunk/nhibernate/src/NHibernate/Linq/ReWriters/ResultOperatorRewriter.cs 2011-02-05 22:43:48 UTC (rev 5374)
@@ -63,6 +63,7 @@
{
typeof(FetchRequestBase),
typeof(OfTypeResultOperator),
+ typeof(CacheableResultOperator),
};
private readonly List<ResultOperatorBase> resultOperators = new List<ResultOperatorBase>();
Modified: trunk/nhibernate/src/NHibernate.Test/Linq/QueryCacheableTests.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Linq/QueryCacheableTests.cs 2011-01-30 14:36:08 UTC (rev 5373)
+++ trunk/nhibernate/src/NHibernate.Test/Linq/QueryCacheableTests.cs 2011-02-05 22:43:48 UTC (rev 5374)
@@ -85,5 +85,34 @@
Assert.That(Sfi.Statistics.QueryCachePutCount, Is.EqualTo(2));
Assert.That(Sfi.Statistics.QueryCacheHitCount, Is.EqualTo(1));
}
+
+ [Test]
+ public void CacheableBeforeOtherClauses()
+ {
+ Sfi.Statistics.Clear();
+ Sfi.QueryCache.Clear();
+
+ db.Customers.Cacheable().Where(c => c.ContactName != c.CompanyName).Take(1).ToList();
+ db.Customers.Where(c => c.ContactName != c.CompanyName).Take(1).ToList();
+
+ Assert.That(Sfi.Statistics.QueryExecutionCount, Is.EqualTo(2));
+ Assert.That(Sfi.Statistics.QueryCachePutCount, Is.EqualTo(1));
+ Assert.That(Sfi.Statistics.QueryCacheHitCount, Is.EqualTo(0));
+ }
+
+ [Test]
+ public void CacheableRegionBeforeOtherClauses()
+ {
+ Sfi.Statistics.Clear();
+ Sfi.QueryCache.Clear();
+
+ db.Customers.Cacheable().CacheRegion("test").Where(c => c.ContactName != c.CompanyName).Take(1).ToList();
+ db.Customers.Cacheable().CacheRegion("test").Where(c => c.ContactName != c.CompanyName).Take(1).ToList();
+ db.Customers.Cacheable().CacheRegion("other").Where(c => c.ContactName != c.CompanyName).Take(1).ToList();
+
+ Assert.That(Sfi.Statistics.QueryExecutionCount, Is.EqualTo(2));
+ Assert.That(Sfi.Statistics.QueryCachePutCount, Is.EqualTo(2));
+ Assert.That(Sfi.Statistics.QueryCacheHitCount, Is.EqualTo(1));
+ }
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|