|
From: <ric...@us...> - 2009-09-30 10:29:49
|
Revision: 4733
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4733&view=rev
Author: ricbrown
Date: 2009-09-30 10:29:35 +0000 (Wed, 30 Sep 2009)
Log Message:
-----------
Added arbitrary ICriterion to IQueryOver (allows protected properties, and eventual lambda-expression overloads for criterion).
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Criterion/QueryOver.cs
trunk/nhibernate/src/NHibernate/IQueryOver.cs
trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/QueryOverFixture.cs
Modified: trunk/nhibernate/src/NHibernate/Criterion/QueryOver.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/QueryOver.cs 2009-09-30 09:40:08 UTC (rev 4732)
+++ trunk/nhibernate/src/NHibernate/Criterion/QueryOver.cs 2009-09-30 10:29:35 UTC (rev 4733)
@@ -52,6 +52,11 @@
return Add(expression);
}
+ public QueryOver<T> And(ICriterion expression)
+ {
+ return Add(expression);
+ }
+
public QueryOver<T> Where(Expression<Func<T, bool>> expression)
{
return Add(expression);
@@ -62,6 +67,11 @@
return Add(expression);
}
+ public QueryOver<T> Where(ICriterion expression)
+ {
+ return Add(expression);
+ }
+
public QueryOver<T> Select(params Expression<Func<T, object>>[] projections)
{
List<IProjection> projectionList = new List<IProjection>();
@@ -275,7 +285,13 @@
return this;
}
+ private QueryOver<T> Add(ICriterion expression)
+ {
+ _criteria.Add(expression);
+ return this;
+ }
+
ICriteria IQueryOver<T>.UnderlyingCriteria
{ get { return UnderlyingCriteria; } }
@@ -285,12 +301,18 @@
IQueryOver<T> IQueryOver<T>.And(Expression<Func<bool>> expression)
{ return And(expression); }
+ IQueryOver<T> IQueryOver<T>.And(ICriterion expression)
+ { return And(expression); }
+
IQueryOver<T> IQueryOver<T>.Where(Expression<Func<T, bool>> expression)
{ return Where(expression); }
IQueryOver<T> IQueryOver<T>.Where(Expression<Func<bool>> expression)
{ return Where(expression); }
+ IQueryOver<T> IQueryOver<T>.Where(ICriterion expression)
+ { return Where(expression); }
+
IQueryOver<T> IQueryOver<T>.Select(params Expression<Func<T, object>>[] projections)
{ return Select(projections); }
Modified: trunk/nhibernate/src/NHibernate/IQueryOver.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/IQueryOver.cs 2009-09-30 09:40:08 UTC (rev 4732)
+++ trunk/nhibernate/src/NHibernate/IQueryOver.cs 2009-09-30 10:29:35 UTC (rev 4733)
@@ -44,6 +44,11 @@
IQueryOver<T> And(Expression<Func<bool>> expression);
/// <summary>
+ /// Add arbitrary ICriterion (e.g., to allow protected member access)
+ /// </summary>
+ IQueryOver<T> And(ICriterion expression);
+
+ /// <summary>
/// Identical semantics to Add() to allow more readable queries
/// </summary>
/// <param name="expression">Lambda expression</param>
@@ -58,6 +63,11 @@
IQueryOver<T> Where(Expression<Func<bool>> expression);
/// <summary>
+ /// Add arbitrary ICriterion (e.g., to allow protected member access)
+ /// </summary>
+ IQueryOver<T> Where(ICriterion expression);
+
+ /// <summary>
/// Add projection expressed as a lambda expression
/// </summary>
/// <param name="projections">Lambda expressions</param>
Modified: trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/QueryOverFixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/QueryOverFixture.cs 2009-09-30 09:40:08 UTC (rev 4732)
+++ trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/QueryOverFixture.cs 2009-09-30 10:29:35 UTC (rev 4733)
@@ -118,6 +118,22 @@
}
[Test]
+ public void PrivateProperties()
+ {
+ ICriteria expected =
+ CreateTestCriteria(typeof(Person))
+ .Add(Restrictions.Eq("Name", "test name"))
+ .Add(Restrictions.Not(Restrictions.Eq("Name", "not test name")));
+
+ IQueryOver<Person> actual =
+ CreateTestQueryOver<Person>()
+ .Where(Restrictions.Eq("Name", "test name"))
+ .And(Restrictions.Not(Restrictions.Eq("Name", "not test name")));
+
+ AssertCriteriaAreEqual(expected, actual);
+ }
+
+ [Test]
public void SimpleCriterion_AliasReferenceSyntax()
{
ICriteria expected =
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|