|
From: <ric...@us...> - 2009-11-28 21:09:32
|
Revision: 4868
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4868&view=rev
Author: ricbrown
Date: 2009-11-28 21:09:24 +0000 (Sat, 28 Nov 2009)
Log Message:
-----------
Expanded IQueryOver to maintain both the original, and sub-criteria types.
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverFetchBuilder.cs
trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverJoinBuilder.cs
trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverLockBuilder.cs
trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverOrderBuilder.cs
trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverProjectionBuilder.cs
trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverRestrictionBuilder.cs
trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryBuilder.cs
trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryPropertyBuilder.cs
trunk/nhibernate/src/NHibernate/Criterion/QueryOver.cs
trunk/nhibernate/src/NHibernate/IQueryOver.cs
trunk/nhibernate/src/NHibernate/ISession.cs
trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs
trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/IntegrationFixture.cs
trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/LambdaFixtureBase.cs
trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Mappings.hbm.xml
trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/Model.cs
trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/QueryOverFixture.cs
Modified: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverFetchBuilder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverFetchBuilder.cs 2009-11-28 14:04:43 UTC (rev 4867)
+++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverFetchBuilder.cs 2009-11-28 21:09:24 UTC (rev 4868)
@@ -9,29 +9,29 @@
namespace NHibernate.Criterion
{
- public class QueryOverFetchBuilder<T> : QueryOverFetchBuilderBase<QueryOver<T>, T>
+ public class QueryOverFetchBuilder<S,T> : QueryOverFetchBuilderBase<QueryOver<S,T>, S, T>
{
- public QueryOverFetchBuilder(QueryOver<T> root, Expression<Func<T, object>> path)
+ public QueryOverFetchBuilder(QueryOver<S,T> root, Expression<Func<S, object>> path)
: base(root, path) { }
}
- public class IQueryOverFetchBuilder<T> : QueryOverFetchBuilderBase<IQueryOver<T>, T>
+ public class IQueryOverFetchBuilder<S,T> : QueryOverFetchBuilderBase<IQueryOver<S,T>, S, T>
{
- public IQueryOverFetchBuilder(IQueryOver<T> root, Expression<Func<T, object>> path)
+ public IQueryOverFetchBuilder(IQueryOver<S,T> root, Expression<Func<S, object>> path)
: base(root, path) { }
}
- public class QueryOverFetchBuilderBase<R, T> where R : IQueryOver<T>
+ public class QueryOverFetchBuilderBase<R, S, T> where R : IQueryOver<S,T>
{
protected R root;
protected string path;
- protected QueryOverFetchBuilderBase(R root, Expression<Func<T, object>> path)
+ protected QueryOverFetchBuilderBase(R root, Expression<Func<S, object>> path)
{
this.root = root;
this.path = ExpressionProcessor.FindMemberExpression(path.Body);
Modified: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverJoinBuilder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverJoinBuilder.cs 2009-11-28 14:04:43 UTC (rev 4867)
+++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverJoinBuilder.cs 2009-11-28 21:09:24 UTC (rev 4868)
@@ -8,100 +8,100 @@
namespace NHibernate.Criterion.Lambda
{
-
- public class QueryOverJoinBuilder<T> : QueryOverJoinBuilderBase<QueryOver<T>, T>
+
+ public class QueryOverJoinBuilder<S,T> : QueryOverJoinBuilderBase<QueryOver<S,T>, S, T>
{
- public QueryOverJoinBuilder(QueryOver<T> root, JoinType joinType) : base(root, joinType) { }
+ public QueryOverJoinBuilder(QueryOver<S,T> root, JoinType joinType) : base(root, joinType) { }
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, U>> path)
+ public QueryOver<S,U> JoinQueryOver<U>(Expression<Func<T, U>> path)
{
return root.JoinQueryOver<U>(path, joinType);
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<U>> path)
+ public QueryOver<S,U> JoinQueryOver<U>(Expression<Func<U>> path)
{
return root.JoinQueryOver<U>(path, joinType);
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, U>> path, Expression<Func<U>> alias)
+ public QueryOver<S,U> JoinQueryOver<U>(Expression<Func<T, U>> path, Expression<Func<U>> alias)
{
return root.JoinQueryOver<U>(path, alias, joinType);
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias)
+ public QueryOver<S,U> JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias)
{
return root.JoinQueryOver<U>(path, alias, joinType);
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path)
+ public QueryOver<S,U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path)
{
return root.JoinQueryOver<U>(path, joinType);
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path)
+ public QueryOver<S,U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path)
{
return root.JoinQueryOver<U>(path, joinType);
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, Expression<Func<U>> alias)
+ public QueryOver<S,U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, Expression<Func<U>> alias)
{
return root.JoinQueryOver<U>(path, alias, joinType);
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, Expression<Func<U>> alias)
+ public QueryOver<S,U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, Expression<Func<U>> alias)
{
return root.JoinQueryOver<U>(path, alias, joinType);
}
}
- public class IQueryOverJoinBuilder<T> : QueryOverJoinBuilderBase<IQueryOver<T>, T>
+ public class IQueryOverJoinBuilder<S,T> : QueryOverJoinBuilderBase<IQueryOver<S,T>, S, T>
{
- public IQueryOverJoinBuilder(IQueryOver<T> root, JoinType joinType) : base(root, joinType) { }
+ public IQueryOverJoinBuilder(IQueryOver<S,T> root, JoinType joinType) : base(root, joinType) { }
- public IQueryOver<U> JoinQueryOver<U>(Expression<Func<T, U>> path)
+ public IQueryOver<S,U> JoinQueryOver<U>(Expression<Func<T, U>> path)
{
return root.JoinQueryOver<U>(path, joinType);
}
- public IQueryOver<U> JoinQueryOver<U>(Expression<Func<U>> path)
+ public IQueryOver<S,U> JoinQueryOver<U>(Expression<Func<U>> path)
{
return root.JoinQueryOver<U>(path, joinType);
}
- public IQueryOver<U> JoinQueryOver<U>(Expression<Func<T, U>> path, Expression<Func<U>> alias)
+ public IQueryOver<S,U> JoinQueryOver<U>(Expression<Func<T, U>> path, Expression<Func<U>> alias)
{
return root.JoinQueryOver<U>(path, alias, joinType);
}
- public IQueryOver<U> JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias)
+ public IQueryOver<S,U> JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias)
{
return root.JoinQueryOver<U>(path, alias, joinType);
}
- public IQueryOver<U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path)
+ public IQueryOver<S,U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path)
{
return root.JoinQueryOver<U>(path, joinType);
}
- public IQueryOver<U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path)
+ public IQueryOver<S,U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path)
{
return root.JoinQueryOver<U>(path, joinType);
}
- public IQueryOver<U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, Expression<Func<U>> alias)
+ public IQueryOver<S,U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, Expression<Func<U>> alias)
{
return root.JoinQueryOver<U>(path, alias, joinType);
}
- public IQueryOver<U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, Expression<Func<U>> alias)
+ public IQueryOver<S,U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, Expression<Func<U>> alias)
{
return root.JoinQueryOver<U>(path, alias, joinType);
}
}
- public class QueryOverJoinBuilderBase<R, T> where R : IQueryOver<T>
+ public class QueryOverJoinBuilderBase<R, S, T> where R : IQueryOver<S,T>
{
protected R root;
Modified: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverLockBuilder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverLockBuilder.cs 2009-11-28 14:04:43 UTC (rev 4867)
+++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverLockBuilder.cs 2009-11-28 21:09:24 UTC (rev 4868)
@@ -9,23 +9,23 @@
namespace NHibernate.Criterion.Lambda
{
- public class QueryOverLockBuilder<T> : QueryOverLockBuilderBase<QueryOver<T>, T>
+ public class QueryOverLockBuilder<S,T> : QueryOverLockBuilderBase<QueryOver<S,T>, S, T>
{
- public QueryOverLockBuilder(QueryOver<T> root, Expression<Func<object>> alias)
+ public QueryOverLockBuilder(QueryOver<S,T> root, Expression<Func<object>> alias)
: base(root, alias) { }
}
- public class IQueryOverLockBuilder<T> : QueryOverLockBuilderBase<IQueryOver<T>, T>
+ public class IQueryOverLockBuilder<S,T> : QueryOverLockBuilderBase<IQueryOver<S,T>, S, T>
{
- public IQueryOverLockBuilder(IQueryOver<T> root, Expression<Func<object>> alias)
+ public IQueryOverLockBuilder(IQueryOver<S,T> root, Expression<Func<object>> alias)
: base(root, alias) { }
}
- public class QueryOverLockBuilderBase<R, T> where R : IQueryOver<T>
+ public class QueryOverLockBuilderBase<R, S, T> where R : IQueryOver<S,T>
{
protected R root;
Modified: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverOrderBuilder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverOrderBuilder.cs 2009-11-28 14:04:43 UTC (rev 4867)
+++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverOrderBuilder.cs 2009-11-28 21:09:24 UTC (rev 4868)
@@ -9,29 +9,29 @@
namespace NHibernate.Criterion.Lambda
{
- public class QueryOverOrderBuilder<T> : QueryOverOrderBuilderBase<QueryOver<T>, T>
+ public class QueryOverOrderBuilder<S,T> : QueryOverOrderBuilderBase<QueryOver<S,T>, S, T>
{
- public QueryOverOrderBuilder(QueryOver<T> root, Expression<Func<T, object>> path) : base(root, path)
+ public QueryOverOrderBuilder(QueryOver<S,T> root, Expression<Func<T, object>> path) : base(root, path)
{}
- public QueryOverOrderBuilder(QueryOver<T> root, Expression<Func<object>> path) : base(root, path)
+ public QueryOverOrderBuilder(QueryOver<S,T> root, Expression<Func<object>> path) : base(root, path)
{}
}
- public class IQueryOverOrderBuilder<T> : QueryOverOrderBuilderBase<IQueryOver<T>, T>
+ public class IQueryOverOrderBuilder<S,T> : QueryOverOrderBuilderBase<IQueryOver<S,T>, S, T>
{
- public IQueryOverOrderBuilder(IQueryOver<T> root, Expression<Func<T, object>> path) : base(root, path)
+ public IQueryOverOrderBuilder(IQueryOver<S,T> root, Expression<Func<T, object>> path) : base(root, path)
{}
- public IQueryOverOrderBuilder(IQueryOver<T> root, Expression<Func<object>> path) : base(root, path)
+ public IQueryOverOrderBuilder(IQueryOver<S,T> root, Expression<Func<object>> path) : base(root, path)
{}
}
- public class QueryOverOrderBuilderBase<R, T> where R : IQueryOver<T>
+ public class QueryOverOrderBuilderBase<R, S, T> where R : IQueryOver<S, T>
{
protected R root;
Modified: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverProjectionBuilder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverProjectionBuilder.cs 2009-11-28 14:04:43 UTC (rev 4867)
+++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverProjectionBuilder.cs 2009-11-28 21:09:24 UTC (rev 4868)
@@ -9,15 +9,15 @@
namespace NHibernate.Criterion.Lambda
{
- public class QueryOverProjectionBuilder<R, T>
+ public class QueryOverProjectionBuilder<R, S, T>
{
private R fluentReturn;
- private IQueryOver<T> criteria;
+ private IQueryOver<S,T> criteria;
private ProjectionList projectionList;
private IProjection lastProjection = null;
- public QueryOverProjectionBuilder(R fluentReturn, IQueryOver<T> criteria)
+ public QueryOverProjectionBuilder(R fluentReturn, IQueryOver<S,T> criteria)
{
this.fluentReturn = fluentReturn;
this.criteria = criteria;
@@ -52,7 +52,7 @@
/// <summary>
/// Create an alias for the previous projection
/// </summary>
- public QueryOverProjectionBuilder<R, T> WithAlias(Expression<Func<object>> alias)
+ public QueryOverProjectionBuilder<R, S, T> WithAlias(Expression<Func<object>> alias)
{
string aliasContainer = ExpressionProcessor.FindMemberExpression(alias.Body);
lastProjection = Projections.Alias(lastProjection, aliasContainer);
@@ -62,7 +62,7 @@
/// <summary>
/// Select an arbitrary projection
/// </summary>
- public QueryOverProjectionBuilder<R, T> Select(IProjection projection)
+ public QueryOverProjectionBuilder<R, S, T> Select(IProjection projection)
{
PushProjection(projection);
return this;
@@ -71,7 +71,7 @@
/// <summary>
/// A property average value
/// </summary>
- public QueryOverProjectionBuilder<R, T> SelectAvg(Expression<Func<T, object>> expression)
+ public QueryOverProjectionBuilder<R, S, T> SelectAvg(Expression<Func<T, object>> expression)
{
PushProjection(Projections.Avg(expression));
return this;
@@ -80,7 +80,7 @@
/// <summary>
/// A property average value
/// </summary>
- public QueryOverProjectionBuilder<R, T> SelectAvg(Expression<Func<object>> expression)
+ public QueryOverProjectionBuilder<R, S, T> SelectAvg(Expression<Func<object>> expression)
{
PushProjection(Projections.Avg(expression));
return this;
@@ -89,7 +89,7 @@
/// <summary>
/// A property value count
/// </summary>
- public QueryOverProjectionBuilder<R, T> SelectCount(Expression<Func<T, object>> expression)
+ public QueryOverProjectionBuilder<R, S, T> SelectCount(Expression<Func<T, object>> expression)
{
PushProjection(Projections.Count(expression));
return this;
@@ -98,7 +98,7 @@
/// <summary>
/// A property value count
/// </summary>
- public QueryOverProjectionBuilder<R, T> SelectCount(Expression<Func<object>> expression)
+ public QueryOverProjectionBuilder<R, S, T> SelectCount(Expression<Func<object>> expression)
{
PushProjection(Projections.Count(expression));
return this;
@@ -107,7 +107,7 @@
/// <summary>
/// A distinct property value count
/// </summary>
- public QueryOverProjectionBuilder<R, T> SelectCountDistinct(Expression<Func<T, object>> expression)
+ public QueryOverProjectionBuilder<R, S, T> SelectCountDistinct(Expression<Func<T, object>> expression)
{
PushProjection(Projections.CountDistinct(expression));
return this;
@@ -116,7 +116,7 @@
/// <summary>
/// A distinct property value count
/// </summary>
- public QueryOverProjectionBuilder<R, T> SelectCountDistinct(Expression<Func<object>> expression)
+ public QueryOverProjectionBuilder<R, S, T> SelectCountDistinct(Expression<Func<object>> expression)
{
PushProjection(Projections.CountDistinct(expression));
return this;
@@ -125,7 +125,7 @@
/// <summary>
/// A grouping property value
/// </summary>
- public QueryOverProjectionBuilder<R, T> SelectGroup(Expression<Func<T, object>> expression)
+ public QueryOverProjectionBuilder<R, S, T> SelectGroup(Expression<Func<T, object>> expression)
{
PushProjection(Projections.Group(expression));
return this;
@@ -134,7 +134,7 @@
/// <summary>
/// A grouping property value
/// </summary>
- public QueryOverProjectionBuilder<R, T> SelectGroup(Expression<Func<object>> expression)
+ public QueryOverProjectionBuilder<R, S, T> SelectGroup(Expression<Func<object>> expression)
{
PushProjection(Projections.Group(expression));
return this;
@@ -143,7 +143,7 @@
/// <summary>
/// A property maximum value
/// </summary>
- public QueryOverProjectionBuilder<R, T> SelectMax(Expression<Func<T, object>> expression)
+ public QueryOverProjectionBuilder<R, S, T> SelectMax(Expression<Func<T, object>> expression)
{
PushProjection(Projections.Max(expression));
return this;
@@ -152,7 +152,7 @@
/// <summary>
/// A property maximum value
/// </summary>
- public QueryOverProjectionBuilder<R, T> SelectMax(Expression<Func<object>> expression)
+ public QueryOverProjectionBuilder<R, S, T> SelectMax(Expression<Func<object>> expression)
{
PushProjection(Projections.Max(expression));
return this;
@@ -161,7 +161,7 @@
/// <summary>
/// A property minimum value
/// </summary>
- public QueryOverProjectionBuilder<R, T> SelectMin(Expression<Func<T, object>> expression)
+ public QueryOverProjectionBuilder<R, S, T> SelectMin(Expression<Func<T, object>> expression)
{
PushProjection(Projections.Min(expression));
return this;
@@ -170,7 +170,7 @@
/// <summary>
/// A property minimum value
/// </summary>
- public QueryOverProjectionBuilder<R, T> SelectMin(Expression<Func<object>> expression)
+ public QueryOverProjectionBuilder<R, S, T> SelectMin(Expression<Func<object>> expression)
{
PushProjection(Projections.Min(expression));
return this;
@@ -179,7 +179,7 @@
/// <summary>
/// A projected property value
/// </summary>
- public QueryOverProjectionBuilder<R, T> Select(Expression<Func<T, object>> expression)
+ public QueryOverProjectionBuilder<R, S, T> Select(Expression<Func<T, object>> expression)
{
PushProjection(Projections.Property(expression));
return this;
@@ -188,13 +188,13 @@
/// <summary>
/// A projected property value
/// </summary>
- public QueryOverProjectionBuilder<R, T> Select(Expression<Func<object>> expression)
+ public QueryOverProjectionBuilder<R, S, T> Select(Expression<Func<object>> expression)
{
PushProjection(Projections.Property(expression));
return this;
}
- public QueryOverProjectionBuilder<R, T> SelectSubQuery<U>(QueryOver<U> detachedQueryOver)
+ public QueryOverProjectionBuilder<R, S, T> SelectSubQuery<U>(QueryOver<U> detachedQueryOver)
{
PushProjection(Projections.SubQuery(detachedQueryOver));
return this;
@@ -203,7 +203,7 @@
/// <summary>
/// A property value sum
/// </summary>
- public QueryOverProjectionBuilder<R, T> SelectSum(Expression<Func<T, object>> expression)
+ public QueryOverProjectionBuilder<R, S, T> SelectSum(Expression<Func<T, object>> expression)
{
PushProjection(Projections.Sum(expression));
return this;
@@ -212,7 +212,7 @@
/// <summary>
/// A property value sum
/// </summary>
- public QueryOverProjectionBuilder<R, T> SelectSum(Expression<Func<object>> expression)
+ public QueryOverProjectionBuilder<R, S, T> SelectSum(Expression<Func<object>> expression)
{
PushProjection(Projections.Sum(expression));
return this;
Modified: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverRestrictionBuilder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverRestrictionBuilder.cs 2009-11-28 14:04:43 UTC (rev 4867)
+++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverRestrictionBuilder.cs 2009-11-28 21:09:24 UTC (rev 4868)
@@ -10,24 +10,24 @@
namespace NHibernate.Criterion.Lambda
{
- public class QueryOverRestrictionBuilder<T> : QueryOverRestrictionBuilderBase<QueryOver<T>, T>
+ public class QueryOverRestrictionBuilder<S,T> : QueryOverRestrictionBuilderBase<QueryOver<S,T>, S, T>
{
- public QueryOverRestrictionBuilder(QueryOver<T> root, string propertyName)
+ public QueryOverRestrictionBuilder(QueryOver<S,T> root, string propertyName)
: base(root, propertyName) { }
}
- public class IQueryOverRestrictionBuilder<T> : QueryOverRestrictionBuilderBase<IQueryOver<T>, T>
+ public class IQueryOverRestrictionBuilder<S,T> : QueryOverRestrictionBuilderBase<IQueryOver<S,T>, S, T>
{
- public IQueryOverRestrictionBuilder(IQueryOver<T> root, string propertyName)
+ public IQueryOverRestrictionBuilder(IQueryOver<S,T> root, string propertyName)
: base(root, propertyName) { }
}
- public class QueryOverRestrictionBuilderBase<R, T>
- where R : IQueryOver<T>
+ public class QueryOverRestrictionBuilderBase<R,S,T>
+ where R : IQueryOver<S,T>
{
public class LambdaBetweenBuilder
{
Modified: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryBuilder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryBuilder.cs 2009-11-28 14:04:43 UTC (rev 4867)
+++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryBuilder.cs 2009-11-28 21:09:24 UTC (rev 4868)
@@ -9,25 +9,25 @@
namespace NHibernate.Criterion.Lambda
{
- public class QueryOverSubqueryBuilder<T> : QueryOverSubqueryBuilderBase<QueryOver<T>, T, QueryOverSubqueryPropertyBuilder<T>>
+ public class QueryOverSubqueryBuilder<S,T> : QueryOverSubqueryBuilderBase<QueryOver<S,T>, S, T, QueryOverSubqueryPropertyBuilder<S,T>>
{
- public QueryOverSubqueryBuilder(QueryOver<T> root)
+ public QueryOverSubqueryBuilder(QueryOver<S,T> root)
: base(root) { }
}
- public class IQueryOverSubqueryBuilder<T> : QueryOverSubqueryBuilderBase<IQueryOver<T>, T, IQueryOverSubqueryPropertyBuilder<T>>
+ public class IQueryOverSubqueryBuilder<S,T> : QueryOverSubqueryBuilderBase<IQueryOver<S,T>, S, T, IQueryOverSubqueryPropertyBuilder<S,T>>
{
- public IQueryOverSubqueryBuilder(IQueryOver<T> root)
+ public IQueryOverSubqueryBuilder(IQueryOver<S,T> root)
: base(root) { }
}
- public class QueryOverSubqueryBuilderBase<R, T, S>
- where R : IQueryOver<T>
- where S : QueryOverSubqueryPropertyBuilderBase, new()
+ public class QueryOverSubqueryBuilderBase<R, S, T, B>
+ where R : IQueryOver<S,T>
+ where B : QueryOverSubqueryPropertyBuilderBase, new()
{
protected R root;
@@ -121,21 +121,21 @@
return root;
}
- public S WhereProperty(Expression<Func<T, object>> expression)
+ public B WhereProperty(Expression<Func<T, object>> expression)
{
string property = ExpressionProcessor.FindMemberExpression(expression.Body);
- return (S)new S().Set(root, property, null);
+ return (B)new B().Set(root, property, null);
}
- public S WhereProperty(Expression<Func<object>> expression)
+ public B WhereProperty(Expression<Func<object>> expression)
{
string property = ExpressionProcessor.FindMemberExpression(expression.Body);
- return (S)new S().Set(root, property, null);
+ return (B)new B().Set(root, property, null);
}
- public S WhereValue(object value)
+ public B WhereValue(object value)
{
- return (S)new S().Set(root, null, value);
+ return (B)new B().Set(root, null, value);
}
}
Modified: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryPropertyBuilder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryPropertyBuilder.cs 2009-11-28 14:04:43 UTC (rev 4867)
+++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryPropertyBuilder.cs 2009-11-28 21:09:24 UTC (rev 4868)
@@ -9,7 +9,7 @@
namespace NHibernate.Criterion.Lambda
{
- public class QueryOverSubqueryPropertyBuilder<T> : QueryOverSubqueryPropertyBuilderBase<QueryOver<T>, T>
+ public class QueryOverSubqueryPropertyBuilder<S,T> : QueryOverSubqueryPropertyBuilderBase<QueryOver<S,T>, S, T>
{
public QueryOverSubqueryPropertyBuilder()
@@ -17,7 +17,7 @@
}
- public class IQueryOverSubqueryPropertyBuilder<T> : QueryOverSubqueryPropertyBuilderBase<IQueryOver<T>, T>
+ public class IQueryOverSubqueryPropertyBuilder<S,T> : QueryOverSubqueryPropertyBuilderBase<IQueryOver<S,T>, S, T>
{
public IQueryOverSubqueryPropertyBuilder()
@@ -32,8 +32,8 @@
internal abstract QueryOverSubqueryPropertyBuilderBase Set(object root, string path, object value);
}
- public class QueryOverSubqueryPropertyBuilderBase<R, T> : QueryOverSubqueryPropertyBuilderBase
- where R : IQueryOver<T>
+ public class QueryOverSubqueryPropertyBuilderBase<R, S, T> : QueryOverSubqueryPropertyBuilderBase
+ where R : IQueryOver<S,T>
{
protected R root;
Modified: trunk/nhibernate/src/NHibernate/Criterion/QueryOver.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/QueryOver.cs 2009-11-28 14:04:43 UTC (rev 4867)
+++ trunk/nhibernate/src/NHibernate/Criterion/QueryOver.cs 2009-11-28 21:09:24 UTC (rev 4868)
@@ -19,14 +19,14 @@
protected QueryOver() { }
- public static QueryOver<T> Of<T>()
+ public static QueryOver<T,T> Of<T>()
{
- return new QueryOver<T>();
+ return new QueryOver<T,T>();
}
- public static QueryOver<T> Of<T>(Expression<Func<T>> alias)
+ public static QueryOver<T,T> Of<T>(Expression<Func<T>> alias)
{
- return new QueryOver<T>(alias);
+ return new QueryOver<T,T>(alias);
}
public ICriteria UnderlyingCriteria
@@ -41,11 +41,105 @@
}
+ [Serializable]
+ public class QueryOver<T> : QueryOver, IQueryOver<T>
+ {
+
+ private IList<T> List()
+ {
+ return _criteria.List<T>();
+ }
+
+ private IList<U> List<U>()
+ {
+ return _criteria.List<U>();
+ }
+
+ private T UniqueResult()
+ {
+ return _criteria.UniqueResult<T>();
+ }
+
+ private U UniqueResult<U>()
+ {
+ return _criteria.UniqueResult<U>();
+ }
+
+ private IEnumerable<T> Future()
+ {
+ return _criteria.Future<T>();
+ }
+
+ private IEnumerable<U> Future<U>()
+ {
+ return _criteria.Future<U>();
+ }
+
+ private IFutureValue<T> FutureValue()
+ {
+ return _criteria.FutureValue<T>();
+ }
+
+ private IFutureValue<U> FutureValue<U>()
+ {
+ return _criteria.FutureValue<U>();
+ }
+
+ /// <summary>
+ /// Get an executable instance of <c>IQueryOver<T></c>,
+ /// to actually run the query.</summary>
+ public IQueryOver<T> GetExecutableQueryOver(ISession session)
+ {
+ _impl.Session = session.GetSessionImplementation();
+ return this;
+ }
+
+ /// <summary>
+ /// Method to allow comparison of detached query in Lambda expression
+ /// e.g., p => p.Name == myQuery.As<string>
+ /// </summary>
+ /// <typeparam name="S">type returned by query</typeparam>
+ /// <returns>throws an exception if evaluated directly at runtime.</returns>
+ public S As<S>()
+ {
+ throw new HibernateException("Incorrect syntax; .As<T> method is for use in Lambda expressions only.");
+ }
+
+
+ ICriteria IQueryOver<T>.UnderlyingCriteria
+ { get { return UnderlyingCriteria; } }
+
+ IList<T> IQueryOver<T>.List()
+ { return List(); }
+
+ IList<U> IQueryOver<T>.List<U>()
+ { return List<U>(); }
+
+ T IQueryOver<T>.UniqueResult()
+ { return UniqueResult(); }
+
+ U IQueryOver<T>.UniqueResult<U>()
+ { return UniqueResult<U>(); }
+
+ IEnumerable<T> IQueryOver<T>.Future()
+ { return Future(); }
+
+ IEnumerable<U> IQueryOver<T>.Future<U>()
+ { return Future<U>(); }
+
+ IFutureValue<T> IQueryOver<T>.FutureValue()
+ { return FutureValue(); }
+
+ IFutureValue<U> IQueryOver<T>.FutureValue<U>()
+ { return FutureValue<U>(); }
+
+ }
+
/// <summary>
/// Implementation of the <see cref="IQueryOver<T>"/> interface
/// </summary>
[Serializable]
- public class QueryOver<T> : QueryOver, IQueryOver<T>
+ public class QueryOver<R,T> : QueryOver<R>, IQueryOver<R,T>
{
protected internal QueryOver()
@@ -73,88 +167,77 @@
_criteria = criteria;
}
- /// <summary>
- /// Method to allow comparison of detached query in Lambda expression
- /// e.g., p => p.Name == myQuery.As<string>
- /// </summary>
- /// <typeparam name="R">type returned by query</typeparam>
- /// <returns>throws an exception if evaluated directly at runtime.</returns>
- public R As<R>()
+ public QueryOver<R,T> And(Expression<Func<T, bool>> expression)
{
- throw new HibernateException("Incorrect syntax; .As<T> method is for use in Lambda expressions only.");
- }
-
- public QueryOver<T> And(Expression<Func<T, bool>> expression)
- {
return Add(expression);
}
- public QueryOver<T> And(Expression<Func<bool>> expression)
+ public QueryOver<R,T> And(Expression<Func<bool>> expression)
{
return Add(expression);
}
- public QueryOver<T> And(ICriterion expression)
+ public QueryOver<R,T> And(ICriterion expression)
{
return Add(expression);
}
- public QueryOver<T> AndNot(Expression<Func<T, bool>> expression)
+ public QueryOver<R,T> AndNot(Expression<Func<T, bool>> expression)
{
return AddNot(expression);
}
- public QueryOver<T> AndNot(Expression<Func<bool>> expression)
+ public QueryOver<R,T> AndNot(Expression<Func<bool>> expression)
{
return AddNot(expression);
}
- public QueryOverRestrictionBuilder<T> AndRestrictionOn(Expression<Func<T, object>> expression)
+ public QueryOverRestrictionBuilder<R,T> AndRestrictionOn(Expression<Func<T, object>> expression)
{
- return new QueryOverRestrictionBuilder<T>(this, ExpressionProcessor.FindMemberExpression(expression.Body));
+ return new QueryOverRestrictionBuilder<R,T>(this, ExpressionProcessor.FindMemberExpression(expression.Body));
}
- public QueryOverRestrictionBuilder<T> AndRestrictionOn(Expression<Func<object>> expression)
+ public QueryOverRestrictionBuilder<R,T> AndRestrictionOn(Expression<Func<object>> expression)
{
- return new QueryOverRestrictionBuilder<T>(this, ExpressionProcessor.FindMemberExpression(expression.Body));
+ return new QueryOverRestrictionBuilder<R,T>(this, ExpressionProcessor.FindMemberExpression(expression.Body));
}
- public QueryOver<T> Where(Expression<Func<T, bool>> expression)
+ public QueryOver<R,T> Where(Expression<Func<T, bool>> expression)
{
return Add(expression);
}
- public QueryOver<T> Where(Expression<Func<bool>> expression)
+ public QueryOver<R,T> Where(Expression<Func<bool>> expression)
{
return Add(expression);
}
- public QueryOver<T> Where(ICriterion expression)
+ public QueryOver<R,T> Where(ICriterion expression)
{
return Add(expression);
}
- public QueryOver<T> WhereNot(Expression<Func<T, bool>> expression)
+ public QueryOver<R,T> WhereNot(Expression<Func<T, bool>> expression)
{
return AddNot(expression);
}
- public QueryOver<T> WhereNot(Expression<Func<bool>> expression)
+ public QueryOver<R,T> WhereNot(Expression<Func<bool>> expression)
{
return AddNot(expression);
}
- public QueryOverRestrictionBuilder<T> WhereRestrictionOn(Expression<Func<T, object>> expression)
+ public QueryOverRestrictionBuilder<R,T> WhereRestrictionOn(Expression<Func<T, object>> expression)
{
- return new QueryOverRestrictionBuilder<T>(this, ExpressionProcessor.FindMemberExpression(expression.Body));
+ return new QueryOverRestrictionBuilder<R,T>(this, ExpressionProcessor.FindMemberExpression(expression.Body));
}
- public QueryOverRestrictionBuilder<T> WhereRestrictionOn(Expression<Func<object>> expression)
+ public QueryOverRestrictionBuilder<R,T> WhereRestrictionOn(Expression<Func<object>> expression)
{
- return new QueryOverRestrictionBuilder<T>(this, ExpressionProcessor.FindMemberExpression(expression.Body));
+ return new QueryOverRestrictionBuilder<R,T>(this, ExpressionProcessor.FindMemberExpression(expression.Body));
}
- public QueryOver<T> Select(params Expression<Func<T, object>>[] projections)
+ public QueryOver<R,T> Select(params Expression<Func<R, object>>[] projections)
{
List<IProjection> projectionList = new List<IProjection>();
@@ -165,216 +248,216 @@
return this;
}
- public QueryOver<T> Select(params IProjection[] projections)
+ public QueryOver<R,T> Select(params IProjection[] projections)
{
_criteria.SetProjection(projections);
return this;
}
- QueryOverProjectionBuilder<QueryOver<T>, T> SelectList
+ QueryOverProjectionBuilder<QueryOver<R,T>, R, T> SelectList
{
- get { return new QueryOverProjectionBuilder<QueryOver<T>, T>(this, this); }
+ get { return new QueryOverProjectionBuilder<QueryOver<R,T>, R, T>(this, this); }
}
- public QueryOverOrderBuilder<T> OrderBy(Expression<Func<T, object>> path)
+ public QueryOverOrderBuilder<R,T> OrderBy(Expression<Func<T, object>> path)
{
- return new QueryOverOrderBuilder<T>(this, path);
+ return new QueryOverOrderBuilder<R,T>(this, path);
}
- public QueryOverOrderBuilder<T> OrderBy(Expression<Func<object>> path)
+ public QueryOverOrderBuilder<R,T> OrderBy(Expression<Func<object>> path)
{
- return new QueryOverOrderBuilder<T>(this, path);
+ return new QueryOverOrderBuilder<R,T>(this, path);
}
- public QueryOverOrderBuilder<T> ThenBy(Expression<Func<T, object>> path)
+ public QueryOverOrderBuilder<R,T> ThenBy(Expression<Func<T, object>> path)
{
- return new QueryOverOrderBuilder<T>(this, path);
+ return new QueryOverOrderBuilder<R,T>(this, path);
}
- public QueryOverOrderBuilder<T> ThenBy(Expression<Func<object>> path)
+ public QueryOverOrderBuilder<R,T> ThenBy(Expression<Func<object>> path)
{
- return new QueryOverOrderBuilder<T>(this, path);
+ return new QueryOverOrderBuilder<R,T>(this, path);
}
- public QueryOver<T> Skip(int firstResult)
+ public QueryOver<R,T> Skip(int firstResult)
{
_criteria.SetFirstResult(firstResult);
return this;
}
- public QueryOver<T> Take(int maxResults)
+ public QueryOver<R,T> Take(int maxResults)
{
_criteria.SetMaxResults(maxResults);
return this;
}
- public QueryOver<T> Cacheable()
+ public QueryOver<R,T> Cacheable()
{
_criteria.SetCacheable(true);
return this;
}
- public QueryOver<T> CacheMode(CacheMode cacheMode)
+ public QueryOver<R,T> CacheMode(CacheMode cacheMode)
{
_criteria.SetCacheMode(cacheMode);
return this;
}
- public QueryOver<T> CacheRegion(string cacheRegion)
+ public QueryOver<R,T> CacheRegion(string cacheRegion)
{
_criteria.SetCacheRegion(cacheRegion);
return this;
}
- public QueryOverSubqueryBuilder<T> WithSubquery
+ public QueryOverSubqueryBuilder<R,T> WithSubquery
{
- get { return new QueryOverSubqueryBuilder<T>(this); }
+ get { return new QueryOverSubqueryBuilder<R,T>(this); }
}
- public QueryOverFetchBuilder<T> Fetch(Expression<Func<T, object>> path)
+ public QueryOverFetchBuilder<R,T> Fetch(Expression<Func<R, object>> path)
{
- return new QueryOverFetchBuilder<T>(this, path);
+ return new QueryOverFetchBuilder<R,T>(this, path);
}
- public QueryOverLockBuilder<T> Lock()
+ public QueryOverLockBuilder<R,T> Lock()
{
- return new QueryOverLockBuilder<T>(this, null);
+ return new QueryOverLockBuilder<R,T>(this, null);
}
- public QueryOverLockBuilder<T> Lock(Expression<Func<object>> alias)
+ public QueryOverLockBuilder<R,T> Lock(Expression<Func<object>> alias)
{
- return new QueryOverLockBuilder<T>(this, alias);
+ return new QueryOverLockBuilder<R,T>(this, alias);
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, U>> path)
+ public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<T, U>> path)
{
- return new QueryOver<U>(_impl,
+ return new QueryOver<R,U>(_impl,
_criteria.CreateCriteria(
ExpressionProcessor.FindMemberExpression(path.Body)));
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<U>> path)
+ public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<U>> path)
{
- return new QueryOver<U>(_impl,
+ return new QueryOver<R,U>(_impl,
_criteria.CreateCriteria(
ExpressionProcessor.FindMemberExpression(path.Body)));
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, U>> path, Expression<Func<U>> alias)
+ public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<T, U>> path, Expression<Func<U>> alias)
{
- return new QueryOver<U>(_impl,
+ return new QueryOver<R,U>(_impl,
_criteria.CreateCriteria(
ExpressionProcessor.FindMemberExpression(path.Body),
ExpressionProcessor.FindMemberExpression(alias.Body)));
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias)
+ public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias)
{
- return new QueryOver<U>(_impl,
+ return new QueryOver<R,U>(_impl,
_criteria.CreateCriteria(
ExpressionProcessor.FindMemberExpression(path.Body),
ExpressionProcessor.FindMemberExpression(alias.Body)));
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, U>> path, JoinType joinType)
+ public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<T, U>> path, JoinType joinType)
{
- return new QueryOver<U>(_impl,
+ return new QueryOver<R,U>(_impl,
_criteria.CreateCriteria(
ExpressionProcessor.FindMemberExpression(path.Body),
joinType));
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<U>> path, JoinType joinType)
+ public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<U>> path, JoinType joinType)
{
- return new QueryOver<U>(_impl,
+ return new QueryOver<R,U>(_impl,
_criteria.CreateCriteria(
ExpressionProcessor.FindMemberExpression(path.Body),
joinType));
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, U>> path, Expression<Func<U>> alias, JoinType joinType)
+ public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<T, U>> path, Expression<Func<U>> alias, JoinType joinType)
{
- return new QueryOver<U>(_impl,
+ return new QueryOver<R,U>(_impl,
_criteria.CreateCriteria(
ExpressionProcessor.FindMemberExpression(path.Body),
ExpressionProcessor.FindMemberExpression(alias.Body),
joinType));
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias, JoinType joinType)
+ public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias, JoinType joinType)
{
- return new QueryOver<U>(_impl,
+ return new QueryOver<R,U>(_impl,
_criteria.CreateCriteria(
ExpressionProcessor.FindMemberExpression(path.Body),
ExpressionProcessor.FindMemberExpression(alias.Body),
joinType));
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, Expression<Func<U>> alias)
+ public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, Expression<Func<U>> alias)
{
- return new QueryOver<U>(_impl,
+ return new QueryOver<R,U>(_impl,
_criteria.CreateCriteria(
ExpressionProcessor.FindMemberExpression(path.Body),
ExpressionProcessor.FindMemberExpression(alias.Body)));
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, Expression<Func<U>> alias)
+ public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, Expression<Func<U>> alias)
{
- return new QueryOver<U>(_impl,
+ return new QueryOver<R,U>(_impl,
_criteria.CreateCriteria(
ExpressionProcessor.FindMemberExpression(path.Body),
ExpressionProcessor.FindMemberExpression(alias.Body)));
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path)
+ public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path)
{
- return new QueryOver<U>(_impl,
+ return new QueryOver<R,U>(_impl,
_criteria.CreateCriteria(
ExpressionProcessor.FindMemberExpression(path.Body)));
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path)
+ public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path)
{
- return new QueryOver<U>(_impl,
+ return new QueryOver<R,U>(_impl,
_criteria.CreateCriteria(
ExpressionProcessor.FindMemberExpression(path.Body)));
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, Expression<Func<U>> alias, JoinType joinType)
+ public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, Expression<Func<U>> alias, JoinType joinType)
{
- return new QueryOver<U>(_impl,
+ return new QueryOver<R,U>(_impl,
_criteria.CreateCriteria(
ExpressionProcessor.FindMemberExpression(path.Body),
ExpressionProcessor.FindMemberExpression(alias.Body),
joinType));
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, Expression<Func<U>> alias, JoinType joinType)
+ public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, Expression<Func<U>> alias, JoinType joinType)
{
- return new QueryOver<U>(_impl,
+ return new QueryOver<R,U>(_impl,
_criteria.CreateCriteria(
ExpressionProcessor.FindMemberExpression(path.Body),
ExpressionProcessor.FindMemberExpression(alias.Body),
joinType));
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, JoinType joinType)
+ public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, JoinType joinType)
{
- return new QueryOver<U>(_impl,
+ return new QueryOver<R,U>(_impl,
_criteria.CreateCriteria(
ExpressionProcessor.FindMemberExpression(path.Body),
joinType));
}
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, JoinType joinType)
+ public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, JoinType joinType)
{
- return new QueryOver<U>(_impl,
+ return new QueryOver<R,U>(_impl,
_criteria.CreateCriteria(
ExpressionProcessor.FindMemberExpression(path.Body),
joinType));
}
- public QueryOver<T> JoinAlias(Expression<Func<T, object>> path, Expression<Func<object>> alias)
+ public QueryOver<R,T> JoinAlias(Expression<Func<T, object>> path, Expression<Func<object>> alias)
{
return AddAlias(
ExpressionProcessor.FindMemberExpression(path.Body),
@@ -382,7 +465,7 @@
JoinType.InnerJoin);
}
- public QueryOver<T> JoinAlias(Expression<Func<object>> path, Expression<Func<object>> alias)
+ public QueryOver<R,T> JoinAlias(Expression<Func<object>> path, Expression<Func<object>> alias)
{
return AddAlias(
ExpressionProcessor.FindMemberExpression(path.Body),
@@ -390,7 +473,7 @@
JoinType.InnerJoin);
}
- public QueryOver<T> JoinAlias(Expression<Func<T, object>> path, Expression<Func<object>> alias, JoinType joinType)
+ public QueryOver<R,T> JoinAlias(Expression<Func<T, object>> path, Expression<Func<object>> alias, JoinType joinType)
{
return AddAlias(
ExpressionProcessor.FindMemberExpression(path.Body),
@@ -398,7 +481,7 @@
joinType);
}
- public QueryOver<T> JoinAlias(Expression<Func<object>> path, Expression<Func<object>> alias, JoinType joinType)
+ public QueryOver<R,T> JoinAlias(Expression<Func<object>> path, Expression<Func<object>> alias, JoinType joinType)
{
return AddAlias(
ExpressionProcessor.FindMemberExpression(path.Body),
@@ -406,301 +489,225 @@
joinType);
}
- public QueryOverJoinBuilder<T> Inner
+ public QueryOverJoinBuilder<R,T> Inner
{
- get { return new QueryOverJoinBuilder<T>(this, JoinType.InnerJoin); }
+ get { return new QueryOverJoinBuilder<R,T>(this, JoinType.InnerJoin); }
}
- public QueryOverJoinBuilder<T> Left
+ public QueryOverJoinBuilder<R,T> Left
{
- get { return new QueryOverJoinBuilder<T>(this, JoinType.LeftOuterJoin); }
+ get { return new QueryOverJoinBuilder<R,T>(this, JoinType.LeftOuterJoin); }
}
- public QueryOverJoinBuilder<T> Right
+ public QueryOverJoinBuilder<R,T> Right
{
- get { return new QueryOverJoinBuilder<T>(this, JoinType.RightOuterJoin); }
+ get { return new QueryOverJoinBuilder<R,T>(this, JoinType.RightOuterJoin); }
}
- public QueryOverJoinBuilder<T> Full
+ public QueryOverJoinBuilder<R,T> Full
{
- get { return new QueryOverJoinBuilder<T>(this, JoinType.FullJoin); }
+ get { return new QueryOverJoinBuilder<R,T>(this, JoinType.FullJoin); }
}
- public IList<T> List()
+ private QueryOver<R,T> AddAlias(string path, string alias, JoinType joinType)
{
- return _criteria.List<T>();
- }
-
- public IList<U> List<U>()
- {
- return _criteria.List<U>();
- }
-
- public T UniqueResult()
- {
- return _criteria.UniqueResult<T>();
- }
-
- public U UniqueResult<U>()
- {
- return _criteria.UniqueResult<U>();
- }
-
- IEnumerable<T> Future()
- {
- return _criteria.Future<T>();
- }
-
- IEnumerable<U> Future<U>()
- {
- return _criteria.Future<U>();
- }
-
- IFutureValue<T> FutureValue()
- {
- return _criteria.FutureValue<T>();
- }
-
- IFutureValue<U> FutureValue<U>()
- {
- return _criteria.FutureValue<U>();
- }
-
- /// <summary>
- /// Get an executable instance of <c>IQueryOver<T></c>,
- /// to actually run the query.</summary>
- public IQueryOver<T> GetExecutableQueryOver(ISession session)
- {
- _impl.Session = session.GetSessionImplementation();
- return this;
- }
-
- private QueryOver<T> AddAlias(string path, string alias, JoinType joinType)
- {
_criteria.CreateAlias(path, alias, joinType);
return this;
}
- private QueryOver<T> Add(Expression<Func<T, bool>> expression)
+ private QueryOver<R,T> Add(Expression<Func<T, bool>> expression)
{
_criteria.Add(ExpressionProcessor.ProcessExpression<T>(expression));
return this;
}
- private QueryOver<T> Add(Expression<Func<bool>> expression)
+ private QueryOver<R,T> Add(Expression<Func<bool>> expression)
{
_criteria.Add(ExpressionProcessor.ProcessExpression(expression));
return this;
}
- private QueryOver<T> Add(ICriterion expression)
+ private QueryOver<R,T> Add(ICriterion expression)
{
_criteria.Add(expression);
return this;
}
- private QueryOver<T> AddNot(Expression<Func<T, bool>> expression)
+ private QueryOver<R,T> AddNot(Expression<Func<T, bool>> expression)
{
_criteria.Add(Restrictions.Not(ExpressionProcessor.ProcessExpression<T>(expression)));
return this;
}
- private QueryOver<T> AddNot(Expression<Func<bool>> expression)
+ private QueryOver<R,T> AddNot(Expression<Func<bool>> expression)
{
_criteria.Add(Restrictions.Not(ExpressionProcessor.ProcessExpression(expression)));
return this;
}
- ICriteria IQueryOver<T>.UnderlyingCriteria
- { get { return UnderlyingCriteria; } }
-
- IQueryOver<T> IQueryOver<T>.And(Expression<Func<T, bool>> expression)
+ IQueryOver<R,T> IQueryOver<R,T>.And(Expression<Func<T, bool>> expression)
{ return And(expression); }
- IQueryOver<T> IQueryOver<T>.And(Expression<Func<bool>> expression)
+ IQueryOver<R,T> IQueryOver<R,T>.And(Expression<Func<bool>> expression)
{ return And(expression); }
- IQueryOver<T> IQueryOver<T>.And(ICriterion expression)
+ IQueryOver<R,T> IQueryOver<R,T>.And(ICriterion expression)
{ return And(expression); }
- IQueryOver<T> IQueryOver<T>.AndNot(Expression<Func<T, bool>> expression)
+ IQueryOver<R,T> IQueryOver<R,T>.AndNot(Expression<Func<T, bool>> expression)
{ return AndNot(expression); }
- IQueryOver<T> IQueryOver<T>.AndNot(Expression<Func<bool>> expression)
+ IQueryOver<R,T> IQueryOver<R,T>.AndNot(Expression<Func<bool>> expression)
{ return AndNot(expression); }
- IQueryOverRestrictionBuilder<T> IQueryOver<T>.AndRestrictionOn(Expression<Func<T, object>> expression)
- { return new IQueryOverRestrictionBuilder<T>(this, ExpressionProcessor.FindMemberExpression(expression.Body)); }
+ IQueryOverRestrictionBuilder<R,T> IQueryOver<R,T>.AndRestrictionOn(Expression<Func<T, object>> expression)
+ { return new IQueryOverRestrictionBuilder<R,T>(this, ExpressionProcessor.FindMemberExpression(expression.Body)); }
- IQueryOverRestrictionBuilder<T> IQueryOver<T>.AndRestrictionOn(Expression<Func<object>> expression)
- { return new IQueryOverRestrictionBuilder<T>(this, ExpressionProcessor.FindMemberExpression(expression.Body)); }
+ IQueryOverRestrictionBuilder<R,T> IQueryOver<R,T>.AndRestrictionOn(Expression<Func<object>> expression)
+ { return new IQueryOverRestrictionBuilder<R,T>(this, ExpressionProcessor.FindMemberExpression(expression.Body)); }
- IQueryOver<T> IQueryOver<T>.Where(Expression<Func<T, bool>> expression)
+ IQueryOver<R,T> IQueryOver<R,T>.Where(Expression<Func<T, bool>> expression)
{ return Where(expression); }
- IQueryOver<T> IQueryOver<T>.Where(Expression<Func<bool>> expression)
+ IQueryOver<R,T> IQueryOver<R,T>.Where(Expression<Func<bool>> expression)
{ return Where(expression); }
- IQueryOver<T> IQueryOver<T>.Where(ICriterion expression)
+ IQueryOver<R,T> IQueryOver<R,T>.Where(ICriterion expression)
{ return Where(expression); }
- IQueryOver<T> IQueryOver<T>.WhereNot(Expression<Func<T, bool>> expression)
+ IQueryOver<R,T> IQueryOver<R,T>.WhereNot(Expression<Func<T, bool>> expression)
{ return WhereNot(expression); }
- IQueryOver<T> IQueryOver<T>.WhereNot(Expression<Func<bool>> expression)
+ IQueryOver<R,T> IQueryOver<R,T>.WhereNot(Expression<Func<bool>> expression)
{ return WhereNot(expression); }
- IQueryOverRestrictionBuilder<T> IQueryOver<T>.WhereRestrictionOn(Expression<Func<T, object>> expression)
- { return new IQueryOverRestrictionBuilder<T>(this, ExpressionProcessor.FindMemberExpression(expression.Body)); }
+ IQueryOverRestrictionBuilder<R,T> IQueryOver<R,T>.WhereRestrictionOn(Expression<Func<T, object>> expression)
+ { return new IQueryOverRestrictionBuilder<R,T>(this, ExpressionProcessor.FindMemberExpression(expression.Body)); }
- IQueryOverRestrictionBuilder<T> IQueryOver<T>.WhereRestrictionOn(Expression<Func<object>> expression)
- { return new IQueryOverRestrictionBuilder<T>(this, ExpressionProcessor.FindMemberExpression(expression.Body)); }
+ IQueryOverRestrictionBuilder<R,T> IQueryOver<R,T>.WhereRestrictionOn(Expression<Func<object>> expression)
+ { return new IQueryOverRestrictionBuilder<R,T>(this, ExpressionProcessor.FindMemberExpression(expression.Body)); }
- IQueryOver<T> IQueryOver<T>.Select(params Expression<Func<T, object>>[] projections)
+ IQueryOver<R,T> IQueryOver<R,T>.Select(params Expression<Func<R, object>>[] projections)
{ return Select(projections); }
- IQueryOver<T> IQueryOver<T>.Select(params IProjection[] projections)
+ IQueryOver<R,T> IQueryOver<R,T>.Select(params IProjection[] projections)
{ return Select(projections); }
- QueryOverProjectionBuilder<IQueryOver<T>, T> IQueryOver<T>.SelectList
- { get { return new QueryOverProjectionBuilder<IQueryOver<T>,T>(this, this); } }
+ QueryOverProjectionBuilder<IQueryOver<R,T>, R, T> IQueryOver<R,T>.SelectList
+ { get { return new QueryOverProjectionBuilder<IQueryOver<R,T>,R,T>(this, this); } }
- IQueryOverOrderBuilder<T> IQueryOver<T>.OrderBy(Expression<Func<T, object>> path)
- { return new IQueryOverOrderBuilder<T>(this, path); }
+ IQueryOverOrderBuilder<R,T> IQueryOver<R,T>.OrderBy(Expression<Func<T, object>> path)
+ { return new IQueryOverOrderBuilder<R,T>(this, path); }
- IQueryOverOrderBuilder<T> IQueryOver<T>.OrderBy(Expression<Func<object>> path)
- { return new IQueryOverOrderBuilder<T>(this, path); }
+ IQueryOverOrderBuilder<R,T> IQueryOver<R,T>.OrderBy(Expression<Func<object>> path)
+ { return new IQueryOverOrderBuilder<R,T>(this, path); }
- IQueryOverOrderBuilder<T> IQueryOver<T>.ThenBy(Expression<Func<T, object>> path)
- { return new IQueryOverOrderBuilder<T>(this, path); }
+ IQueryOverOrderBuilder<R,T> IQueryOver<R,T>.ThenBy(Expression<Func<T, object>> path)
+ { return new IQueryOverOrderBuilder<R,T>(this, path); }
- IQueryOverOrderBuilder<T> IQueryOver<T>.ThenBy(Expression<Func<object>> path)
- { return new IQueryOverOrderBuilder<T>(this, path); }
+ IQueryOverOrderBuilder<R,T> IQueryOver<R,T>.ThenBy(Expression<Func<object>> path)
+ { return new IQueryOverOrderBuilder<R,T>(this, path); }
- IQueryOver<T> IQueryOver<T>.Skip(int firstResult)
+ IQueryOver<R,T> IQueryOver<R,T>.Skip(int firstResult)
{ return Skip(firstResult); }
- IQueryOver<T> IQueryOver<T>.Take(int maxResults)
+ IQueryOver<R,T> IQueryOver<R,T>.Take(int maxResults)
{ return Take(maxResults); }
- IQueryOver<T> IQueryOver<T>.Cacheable()
+ IQueryOver<R,T> IQueryOver<R,T>.Cacheable()
{ return Cacheable(); }
- IQueryOver<T> IQueryOver<T>.CacheMode(CacheMode cacheMode)
+ IQueryOver<R,T> IQueryOver<R,T>.CacheMode(CacheMode cacheMode)
{ return CacheMode(cacheMode); }
- IQueryOver<T> IQueryOver<T>.CacheRegion(string cacheRegion)
+ IQueryOver<R,T> IQueryOver<R,T>.CacheRegion(string cacheRegion)
{ return CacheRegion(cacheRegion); }
- IQueryOverSubqueryBuilder<T> IQueryOver<T>.WithSubquery
- { get { return new IQueryOverSubqueryBuilder<T>(this); } }
+ IQueryOverSubqueryBuilder<R,T> IQueryOver<R,T>.WithSubquery
+ { get { return new IQueryOverSubqueryBuilder<R,T>(this); } }
- IQueryOverFetchBuilder<T> IQueryOver<T>.Fetch(Expression<Func<T, object>> path)
- { return new IQueryOverFetchBuilder<T>(this, path); }
+ IQueryOverFetchBuilder<R,T> IQueryOver<R,T>.Fetch(Expression<Func<R, object>> path)
+ { return new IQueryOverFetchBuilder<R,T>(this, path); }
- IQueryOverLockBuilder<T> IQueryOver<T>.Lock()
- { return new IQueryOverLockBuilder<T>(this, null); }
+ IQueryOverLockBuilder<R,T> IQueryOver<R,T>.Lock()
+ { return new IQueryOverLockBuilder<R,T>(this, null); }
- IQueryOverLockBuilder<T> IQueryOver<T>.Lock(Expression<Func<object>> alias)
- { return new IQueryOverLockBuilder<T>(this, alias); }
+ IQueryOverLockBuilder<R,T> IQueryOver<R,T>.Lock(Expression<Func<object>> alias)
+ { return new IQueryOverLockBuilder<R,T>(this, alias); }
- IQueryOver<U> IQueryOver<T>.JoinQueryOver<U>(Expression<Func<T, U>> path)
+ IQueryOver<R,U> IQueryOver<R,T>.JoinQueryOver<U>(Expression<Func<T, U>> path)
{ return JoinQueryOver(path); }
- IQueryOver<U> IQueryOver<T>.JoinQueryOver<U>(Expression<Func<U>> path)
+ IQueryOver<R,U> IQueryOver<R,T>.JoinQueryOver<U>(Expression<Func<U>> path)
{ return JoinQueryOver(path); }
- IQueryOver<U> IQueryOver<T>.JoinQueryOver<U>(Expression<Func<T, U>> path, Expression<Func<U>> alias)
+ IQueryOver<R,U> IQueryOver<R,T>.JoinQueryOver<U>(Expression<Func<T, U>> path, Expression<Func<U>> alias)
{ return JoinQueryOver(path, alias); }
- IQueryOver<U> IQueryOver<T>.JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias)
+ IQueryOver<R,U> IQueryOver<R,T>.JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias)
{ return JoinQueryOver(path, alias); }
- IQueryOver<U> IQueryOver<T>.JoinQueryOver<U>(Expression<Func<T, U>> path, JoinType joinType)
+ IQueryOver<R,U> IQueryOver<R,T>.JoinQueryOver<U>(Expression<Func<T, U>> path, JoinType joinType)
{ return JoinQueryOver(path, joinType); }
- IQueryOver<U> IQueryOver<T>.JoinQueryOver<U>(Expression<Func<U>> path, JoinType joinType)
+ IQueryOver<R,U> IQueryOver<R,T>.JoinQueryOver<U>(Expression<Func<U>> path, JoinType joinType)
{ return JoinQueryOver(path, joinType); }
- IQueryOver<U> IQueryOver<T>.JoinQueryOver<U>(Expression<Func<T, U>> path, Expression<Func<U>> alias, JoinType joinType)
+ IQueryOver<R,U> IQueryOver<R,T>.JoinQueryOver<U>(Expression<Func<T, U>> path, Expression<Func<U>> alias, JoinType joinType)
{ return JoinQueryOver(path, alias, joinType); }
- IQueryOver<U> IQueryOver<T>.JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias, JoinType joinType)
+ IQueryOver<R,U> IQueryOver<R,T>.JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias, JoinType joinType)
{ return JoinQueryOver(path, alias, joinType); }
- IQueryOver<U> IQueryOver<T>.JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path)
+ IQueryOver<R,U> IQueryOver<R,T>.JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path)
{ return JoinQueryOver(path); }
- IQueryOver<U> IQueryOver<T>.JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path)
+ IQueryOver<R,U> IQueryOver<R,T>.JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path)
{ return JoinQueryOver(path); }
- IQueryOver<U> IQueryOver<T>.JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, Expression<Func<U>> alias)
+ IQueryOver<R,U> IQueryOver<R,T>.JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, Expression<Func<U>> alias)
{ return JoinQueryOver(path, alias); }
- IQueryOver<U> IQueryOver<T>.JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, Expression<Func<U>> alias)
+ IQueryOver<R,U> IQueryOver<R,T>.JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, Expression<Func<U>> alias)
{ return JoinQueryOver(path, alias); }
- IQueryOver<U> IQueryOver<T>.JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, JoinType joinType)
+ IQueryOver<R,U> IQueryOver<R,T>.JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, JoinType joinType)
{ return JoinQueryOver(path, joinType); }
- IQueryOver<U> IQueryOver<T>.JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, JoinType joinType)
+ IQueryOver<R,U> IQueryOver<R,T>.JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, JoinType joinType)
{ return JoinQueryOver(path, joinType); }
- IQueryOver<U> IQueryOver<T>.JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, Expression<Func<U>> alias, JoinType joinType)
+ IQueryOver<R,U> IQueryOver<R,T>.JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, Expression<Func<U>> alias, JoinType joinType)
{ return JoinQueryOver(path, alias, joinType); }
- IQueryOver<U> IQueryOver<T>.JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, Expression<Func<U>> alias, JoinType joinType)
+ IQueryOver<R,U> IQueryOver<R,T>.JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, Expression<Func<U>> alias, JoinType joinType)
{ return JoinQueryOver(path, alias, joinType); }
- IQueryOver<T> IQueryOver<T>.JoinAlias(Expression<Func<T, object>> path, Expression<Func<object>> alias)
+ IQueryOver<R,T> IQueryOver<R,T>.JoinAlias(Expression<Func<T, object>> path, Expression<Func<object>> alias)
{ return JoinAlias(path, alias); }
- IQueryOver<T> IQueryOver<T>.JoinAlias(Expression<Func<object>> path, Expression<Func<object>> alias)
+ IQueryOver<R,T> IQueryOver<R,T>.JoinAlias(Expression<Func<object>> path, Expression<Func<object>> alias)
{ return JoinAlias(path, alias); }
- IQueryOver<T> IQueryOver<T>.JoinAlias(Expression<Func<T, object>> path, Expression<Func<object>> alias, JoinType joinType)
+ IQueryOver<R,T> IQueryOver<R,T>.JoinAlias(Expression<Func<T, object>> path, Expression<Func<object>> alias, JoinType joinType)
{ return JoinAlias(path, alias, joinType); }
- IQueryOver<T> IQueryOver<T>.JoinAlias(Expression<Func<object>> path, Expression<Func<object>> alias, JoinType joinType)
+ IQueryOver<R,T> IQueryOver<R,T>.JoinAlias(Expression<Func<object>> path, Expression<Func<object>> alias, JoinType joinType)
{ return JoinAlias(path, alias, joinType); }
- IQueryOverJoinBuilder<T> IQueryOver<T>.Inner
- { get { return new IQueryOverJoinBuilder<T>(this, JoinType.InnerJoin); } }
+ IQueryOverJoinBuilder<R,T> IQueryOver<R,T>.Inner
+ { get { return new IQueryOverJoinBuilder<R,T>(this, JoinType.InnerJoin); } }
- IQueryOverJoinBuilder<T> IQueryOver<T>.Left
- { get { return new IQueryOverJoinBuilder<T>(this, JoinType.LeftOuterJoin); } }
+ IQueryOverJoinBuilder<R,T> IQueryOver<R,T>.Left
+ { get { return new IQueryOverJoinBuilder<R,T>(this, JoinType.LeftOuterJoin); } }
- IQueryOverJoinBuilder<T> IQueryOver<T>.Right
- { get { return new IQueryOverJoinBuilder<T>(this, JoinType.RightOuterJoin); } }
+ IQueryOverJoinBuilder<R,T> IQueryOver<R,T>.Right
+ { get { return new IQueryOverJoinBuilder<R,T>(this, JoinType.RightOuterJoin); } }
- IQueryOverJoinBuilder<T> IQueryOver<T>.Full
- { get { return new IQueryOverJoinBuilder<T>(this, JoinType.FullJoin); } }
+ IQueryOverJoinBuilder<R,T> IQueryOver<R,T>.Full
+ { get { return new IQueryOverJoinBuilder<R,T>(this, JoinType.FullJoin); } }
- IList<T> IQueryOver<T>.List()
- { return List(); }
-
- IList<U> IQueryOver<T>.List<U>()
- { return List<U>(); }
-
- T IQueryOver<T>.UniqueResult()
- { return UniqueResult(); }
-
- U IQueryOver<T>.UniqueResult<U>()
- { return UniqueResult<U>(); }
-
- IEnumerable<T> IQueryOver<T...
[truncated message content] |