From: <ric...@us...> - 2009-11-30 13:28:14
|
Revision: 4876 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4876&view=rev Author: ricbrown Date: 2009-11-30 13:28:06 +0000 (Mon, 30 Nov 2009) Log Message: ----------- Refactored generic type naming for IQueryOver and removed a couple of compiler warnings. 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.Test/Criteria/Lambda/LambdaFixtureBase.cs Modified: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverFetchBuilder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverFetchBuilder.cs 2009-11-30 03:21:02 UTC (rev 4875) +++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverFetchBuilder.cs 2009-11-30 13:28:06 UTC (rev 4876) @@ -9,35 +9,35 @@ namespace NHibernate.Criterion { - public class QueryOverFetchBuilder<S,T> : QueryOverFetchBuilderBase<QueryOver<S,T>, S, T> + public class QueryOverFetchBuilder<TRoot,TSubType> : QueryOverFetchBuilderBase<QueryOver<TRoot,TSubType>, TRoot, TSubType> { - public QueryOverFetchBuilder(QueryOver<S,T> root, Expression<Func<S, object>> path) + public QueryOverFetchBuilder(QueryOver<TRoot,TSubType> root, Expression<Func<TRoot, object>> path) : base(root, path) { } } - public class IQueryOverFetchBuilder<S,T> : QueryOverFetchBuilderBase<IQueryOver<S,T>, S, T> + public class IQueryOverFetchBuilder<TRoot,TSubType> : QueryOverFetchBuilderBase<IQueryOver<TRoot,TSubType>, TRoot, TSubType> { - public IQueryOverFetchBuilder(IQueryOver<S,T> root, Expression<Func<S, object>> path) + public IQueryOverFetchBuilder(IQueryOver<TRoot,TSubType> root, Expression<Func<TRoot, object>> path) : base(root, path) { } } - public class QueryOverFetchBuilderBase<R, S, T> where R : IQueryOver<S,T> + public class QueryOverFetchBuilderBase<TReturn, TRoot, TSubType> where TReturn : IQueryOver<TRoot,TSubType> { - protected R root; + protected TReturn root; protected string path; - protected QueryOverFetchBuilderBase(R root, Expression<Func<S, object>> path) + protected QueryOverFetchBuilderBase(TReturn root, Expression<Func<TRoot, object>> path) { this.root = root; this.path = ExpressionProcessor.FindMemberExpression(path.Body); } - public R Eager + public TReturn Eager { get { @@ -46,7 +46,7 @@ } } - public R Lazy + public TReturn Lazy { get { @@ -55,7 +55,7 @@ } } - public R Default + public TReturn Default { get { Modified: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverJoinBuilder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverJoinBuilder.cs 2009-11-30 03:21:02 UTC (rev 4875) +++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverJoinBuilder.cs 2009-11-30 13:28:06 UTC (rev 4876) @@ -9,118 +9,118 @@ namespace NHibernate.Criterion.Lambda { - public class QueryOverJoinBuilder<S,T> : QueryOverJoinBuilderBase<QueryOver<S,T>, S, T> + public class QueryOverJoinBuilder<TRoot,TSubType> : QueryOverJoinBuilderBase<QueryOver<TRoot,TSubType>, TRoot, TSubType> { - public QueryOverJoinBuilder(QueryOver<S,T> root, JoinType joinType) : base(root, joinType) { } + public QueryOverJoinBuilder(QueryOver<TRoot,TSubType> root, JoinType joinType) : base(root, joinType) { } - public QueryOver<S,U> JoinQueryOver<U>(Expression<Func<T, U>> path) + public QueryOver<TRoot,U> JoinQueryOver<U>(Expression<Func<TSubType, U>> path) { return root.JoinQueryOver<U>(path, joinType); } - public QueryOver<S,U> JoinQueryOver<U>(Expression<Func<U>> path) + public QueryOver<TRoot,U> JoinQueryOver<U>(Expression<Func<U>> path) { return root.JoinQueryOver<U>(path, joinType); } - public QueryOver<S,U> JoinQueryOver<U>(Expression<Func<T, U>> path, Expression<Func<U>> alias) + public QueryOver<TRoot,U> JoinQueryOver<U>(Expression<Func<TSubType, U>> path, Expression<Func<U>> alias) { return root.JoinQueryOver<U>(path, alias, joinType); } - public QueryOver<S,U> JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias) + public QueryOver<TRoot,U> JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias) { return root.JoinQueryOver<U>(path, alias, joinType); } - public QueryOver<S,U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path) + public QueryOver<TRoot,U> JoinQueryOver<U>(Expression<Func<TSubType, IEnumerable<U>>> path) { return root.JoinQueryOver<U>(path, joinType); } - public QueryOver<S,U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path) + public QueryOver<TRoot,U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path) { return root.JoinQueryOver<U>(path, joinType); } - public QueryOver<S,U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, Expression<Func<U>> alias) + public QueryOver<TRoot,U> JoinQueryOver<U>(Expression<Func<TSubType, IEnumerable<U>>> path, Expression<Func<U>> alias) { return root.JoinQueryOver<U>(path, alias, joinType); } - public QueryOver<S,U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, Expression<Func<U>> alias) + public QueryOver<TRoot,U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, Expression<Func<U>> alias) { return root.JoinQueryOver<U>(path, alias, joinType); } } - public class IQueryOverJoinBuilder<S,T> : QueryOverJoinBuilderBase<IQueryOver<S,T>, S, T> + public class IQueryOverJoinBuilder<TRoot,TSubType> : QueryOverJoinBuilderBase<IQueryOver<TRoot,TSubType>, TRoot, TSubType> { - public IQueryOverJoinBuilder(IQueryOver<S,T> root, JoinType joinType) : base(root, joinType) { } + public IQueryOverJoinBuilder(IQueryOver<TRoot,TSubType> root, JoinType joinType) : base(root, joinType) { } - public IQueryOver<S,U> JoinQueryOver<U>(Expression<Func<T, U>> path) + public IQueryOver<TRoot,U> JoinQueryOver<U>(Expression<Func<TSubType, U>> path) { return root.JoinQueryOver<U>(path, joinType); } - public IQueryOver<S,U> JoinQueryOver<U>(Expression<Func<U>> path) + public IQueryOver<TRoot,U> JoinQueryOver<U>(Expression<Func<U>> path) { return root.JoinQueryOver<U>(path, joinType); } - public IQueryOver<S,U> JoinQueryOver<U>(Expression<Func<T, U>> path, Expression<Func<U>> alias) + public IQueryOver<TRoot,U> JoinQueryOver<U>(Expression<Func<TSubType, U>> path, Expression<Func<U>> alias) { return root.JoinQueryOver<U>(path, alias, joinType); } - public IQueryOver<S,U> JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias) + public IQueryOver<TRoot,U> JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias) { return root.JoinQueryOver<U>(path, alias, joinType); } - public IQueryOver<S,U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path) + public IQueryOver<TRoot,U> JoinQueryOver<U>(Expression<Func<TSubType, IEnumerable<U>>> path) { return root.JoinQueryOver<U>(path, joinType); } - public IQueryOver<S,U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path) + public IQueryOver<TRoot,U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path) { return root.JoinQueryOver<U>(path, joinType); } - public IQueryOver<S,U> JoinQueryOver<U>(Expression<Func<T, IEnumerable<U>>> path, Expression<Func<U>> alias) + public IQueryOver<TRoot,U> JoinQueryOver<U>(Expression<Func<TSubType, IEnumerable<U>>> path, Expression<Func<U>> alias) { return root.JoinQueryOver<U>(path, alias, joinType); } - public IQueryOver<S,U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, Expression<Func<U>> alias) + public IQueryOver<TRoot,U> JoinQueryOver<U>(Expression<Func<IEnumerable<U>>> path, Expression<Func<U>> alias) { return root.JoinQueryOver<U>(path, alias, joinType); } } - public class QueryOverJoinBuilderBase<R, S, T> where R : IQueryOver<S,T> + public class QueryOverJoinBuilderBase<TReturn, TRoot, TSubType> where TReturn : IQueryOver<TRoot,TSubType> { - protected R root; + protected TReturn root; protected JoinType joinType; - public QueryOverJoinBuilderBase(R root, JoinType joinType) + public QueryOverJoinBuilderBase(TReturn root, JoinType joinType) { this.root = root; this.joinType = joinType; } - public R JoinAlias(Expression<Func<T, object>> path, Expression<Func<object>> alias) + public TReturn JoinAlias(Expression<Func<TSubType, object>> path, Expression<Func<object>> alias) { - return (R)root.JoinAlias(path, alias, joinType); + return (TReturn)root.JoinAlias(path, alias, joinType); } - public R JoinAlias(Expression<Func<object>> path, Expression<Func<object>> alias) + public TReturn JoinAlias(Expression<Func<object>> path, Expression<Func<object>> alias) { - return (R)root.JoinAlias(path, alias, joinType); + return (TReturn)root.JoinAlias(path, alias, joinType); } } Modified: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverLockBuilder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverLockBuilder.cs 2009-11-30 03:21:02 UTC (rev 4875) +++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverLockBuilder.cs 2009-11-30 13:28:06 UTC (rev 4876) @@ -9,29 +9,29 @@ namespace NHibernate.Criterion.Lambda { - public class QueryOverLockBuilder<S,T> : QueryOverLockBuilderBase<QueryOver<S,T>, S, T> + public class QueryOverLockBuilder<TRoot,TSubType> : QueryOverLockBuilderBase<QueryOver<TRoot,TSubType>, TRoot, TSubType> { - public QueryOverLockBuilder(QueryOver<S,T> root, Expression<Func<object>> alias) + public QueryOverLockBuilder(QueryOver<TRoot,TSubType> root, Expression<Func<object>> alias) : base(root, alias) { } } - public class IQueryOverLockBuilder<S,T> : QueryOverLockBuilderBase<IQueryOver<S,T>, S, T> + public class IQueryOverLockBuilder<TRoot,TSubType> : QueryOverLockBuilderBase<IQueryOver<TRoot,TSubType>, TRoot, TSubType> { - public IQueryOverLockBuilder(IQueryOver<S,T> root, Expression<Func<object>> alias) + public IQueryOverLockBuilder(IQueryOver<TRoot,TSubType> root, Expression<Func<object>> alias) : base(root, alias) { } } - public class QueryOverLockBuilderBase<R, S, T> where R : IQueryOver<S,T> + public class QueryOverLockBuilderBase<TReturn, TRoot, TSubType> where TReturn : IQueryOver<TRoot,TSubType> { - protected R root; + protected TReturn root; protected string alias; - protected QueryOverLockBuilderBase(R root, Expression<Func<object>> alias) + protected QueryOverLockBuilderBase(TReturn root, Expression<Func<object>> alias) { this.root = root; @@ -47,7 +47,7 @@ root.UnderlyingCriteria.SetLockMode(lockMode); } - public R Force + public TReturn Force { get { @@ -56,7 +56,7 @@ } } - public R None + public TReturn None { get { @@ -65,7 +65,7 @@ } } - public R Read + public TReturn Read { get { @@ -74,7 +74,7 @@ } } - public R Upgrade + public TReturn Upgrade { get { @@ -83,7 +83,7 @@ } } - public R UpgradeNoWait + public TReturn UpgradeNoWait { get { @@ -92,7 +92,7 @@ } } - public R Write + public TReturn Write { get { Modified: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverOrderBuilder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverOrderBuilder.cs 2009-11-30 03:21:02 UTC (rev 4875) +++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverOrderBuilder.cs 2009-11-30 13:28:06 UTC (rev 4876) @@ -9,47 +9,47 @@ namespace NHibernate.Criterion.Lambda { - public class QueryOverOrderBuilder<S,T> : QueryOverOrderBuilderBase<QueryOver<S,T>, S, T> + public class QueryOverOrderBuilder<TRoot,TSubType> : QueryOverOrderBuilderBase<QueryOver<TRoot,TSubType>, TRoot, TSubType> { - public QueryOverOrderBuilder(QueryOver<S,T> root, Expression<Func<T, object>> path) : base(root, path) + public QueryOverOrderBuilder(QueryOver<TRoot,TSubType> root, Expression<Func<TSubType, object>> path) : base(root, path) {} - public QueryOverOrderBuilder(QueryOver<S,T> root, Expression<Func<object>> path) : base(root, path) + public QueryOverOrderBuilder(QueryOver<TRoot,TSubType> root, Expression<Func<object>> path) : base(root, path) {} } - public class IQueryOverOrderBuilder<S,T> : QueryOverOrderBuilderBase<IQueryOver<S,T>, S, T> + public class IQueryOverOrderBuilder<TRoot,TSubType> : QueryOverOrderBuilderBase<IQueryOver<TRoot,TSubType>, TRoot, TSubType> { - public IQueryOverOrderBuilder(IQueryOver<S,T> root, Expression<Func<T, object>> path) : base(root, path) + public IQueryOverOrderBuilder(IQueryOver<TRoot,TSubType> root, Expression<Func<TSubType, object>> path) : base(root, path) {} - public IQueryOverOrderBuilder(IQueryOver<S,T> root, Expression<Func<object>> path) : base(root, path) + public IQueryOverOrderBuilder(IQueryOver<TRoot,TSubType> root, Expression<Func<object>> path) : base(root, path) {} } - public class QueryOverOrderBuilderBase<R, S, T> where R : IQueryOver<S, T> + public class QueryOverOrderBuilderBase<TReturn, TRoot, TSubType> where TReturn : IQueryOver<TRoot, TSubType> { - protected R root; + protected TReturn root; protected LambdaExpression path; - protected QueryOverOrderBuilderBase(R root, Expression<Func<T, object>> path) + protected QueryOverOrderBuilderBase(TReturn root, Expression<Func<TSubType, object>> path) { this.root = root; this.path = path; } - protected QueryOverOrderBuilderBase(R root, Expression<Func<object>> path) + protected QueryOverOrderBuilderBase(TReturn root, Expression<Func<object>> path) { this.root = root; this.path = path; } - public R Asc + public TReturn Asc { get { @@ -58,7 +58,7 @@ } } - public R Desc + public TReturn Desc { get { Modified: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverProjectionBuilder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverProjectionBuilder.cs 2009-11-30 03:21:02 UTC (rev 4875) +++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverProjectionBuilder.cs 2009-11-30 13:28:06 UTC (rev 4876) @@ -9,15 +9,15 @@ namespace NHibernate.Criterion.Lambda { - public class QueryOverProjectionBuilder<R, S, T> + public class QueryOverProjectionBuilder<TReturn, TRoot, TSubType> { - private R fluentReturn; - private IQueryOver<S,T> criteria; + private TReturn fluentReturn; + private IQueryOver<TRoot,TSubType> criteria; private ProjectionList projectionList; private IProjection lastProjection = null; - public QueryOverProjectionBuilder(R fluentReturn, IQueryOver<S,T> criteria) + public QueryOverProjectionBuilder(TReturn fluentReturn, IQueryOver<TRoot,TSubType> criteria) { this.fluentReturn = fluentReturn; this.criteria = criteria; @@ -39,7 +39,7 @@ /// <summary> /// Create the ProjectionList and return to the query /// </summary> - public R EndSelect + public TReturn EndSelect { get { @@ -52,7 +52,7 @@ /// <summary> /// Create an alias for the previous projection /// </summary> - public QueryOverProjectionBuilder<R, S, T> WithAlias(Expression<Func<object>> alias) + public QueryOverProjectionBuilder<TReturn, TRoot, TSubType> 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, S, T> Select(IProjection projection) + public QueryOverProjectionBuilder<TReturn, TRoot, TSubType> Select(IProjection projection) { PushProjection(projection); return this; @@ -71,7 +71,7 @@ /// <summary> /// A property average value /// </summary> - public QueryOverProjectionBuilder<R, S, T> SelectAvg(Expression<Func<T, object>> expression) + public QueryOverProjectionBuilder<TReturn, TRoot, TSubType> SelectAvg(Expression<Func<TSubType, object>> expression) { PushProjection(Projections.Avg(expression)); return this; @@ -80,7 +80,7 @@ /// <summary> /// A property average value /// </summary> - public QueryOverProjectionBuilder<R, S, T> SelectAvg(Expression<Func<object>> expression) + public QueryOverProjectionBuilder<TReturn, TRoot, TSubType> SelectAvg(Expression<Func<object>> expression) { PushProjection(Projections.Avg(expression)); return this; @@ -89,7 +89,7 @@ /// <summary> /// A property value count /// </summary> - public QueryOverProjectionBuilder<R, S, T> SelectCount(Expression<Func<T, object>> expression) + public QueryOverProjectionBuilder<TReturn, TRoot, TSubType> SelectCount(Expression<Func<TSubType, object>> expression) { PushProjection(Projections.Count(expression)); return this; @@ -98,7 +98,7 @@ /// <summary> /// A property value count /// </summary> - public QueryOverProjectionBuilder<R, S, T> SelectCount(Expression<Func<object>> expression) + public QueryOverProjectionBuilder<TReturn, TRoot, TSubType> 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, S, T> SelectCountDistinct(Expression<Func<T, object>> expression) + public QueryOverProjectionBuilder<TReturn, TRoot, TSubType> SelectCountDistinct(Expression<Func<TSubType, object>> expression) { PushProjection(Projections.CountDistinct(expression)); return this; @@ -116,7 +116,7 @@ /// <summary> /// A distinct property value count /// </summary> - public QueryOverProjectionBuilder<R, S, T> SelectCountDistinct(Expression<Func<object>> expression) + public QueryOverProjectionBuilder<TReturn, TRoot, TSubType> SelectCountDistinct(Expression<Func<object>> expression) { PushProjection(Projections.CountDistinct(expression)); return this; @@ -125,7 +125,7 @@ /// <summary> /// A grouping property value /// </summary> - public QueryOverProjectionBuilder<R, S, T> SelectGroup(Expression<Func<T, object>> expression) + public QueryOverProjectionBuilder<TReturn, TRoot, TSubType> SelectGroup(Expression<Func<TSubType, object>> expression) { PushProjection(Projections.Group(expression)); return this; @@ -134,7 +134,7 @@ /// <summary> /// A grouping property value /// </summary> - public QueryOverProjectionBuilder<R, S, T> SelectGroup(Expression<Func<object>> expression) + public QueryOverProjectionBuilder<TReturn, TRoot, TSubType> SelectGroup(Expression<Func<object>> expression) { PushProjection(Projections.Group(expression)); return this; @@ -143,7 +143,7 @@ /// <summary> /// A property maximum value /// </summary> - public QueryOverProjectionBuilder<R, S, T> SelectMax(Expression<Func<T, object>> expression) + public QueryOverProjectionBuilder<TReturn, TRoot, TSubType> SelectMax(Expression<Func<TSubType, object>> expression) { PushProjection(Projections.Max(expression)); return this; @@ -152,7 +152,7 @@ /// <summary> /// A property maximum value /// </summary> - public QueryOverProjectionBuilder<R, S, T> SelectMax(Expression<Func<object>> expression) + public QueryOverProjectionBuilder<TReturn, TRoot, TSubType> SelectMax(Expression<Func<object>> expression) { PushProjection(Projections.Max(expression)); return this; @@ -161,7 +161,7 @@ /// <summary> /// A property minimum value /// </summary> - public QueryOverProjectionBuilder<R, S, T> SelectMin(Expression<Func<T, object>> expression) + public QueryOverProjectionBuilder<TReturn, TRoot, TSubType> SelectMin(Expression<Func<TSubType, object>> expression) { PushProjection(Projections.Min(expression)); return this; @@ -170,7 +170,7 @@ /// <summary> /// A property minimum value /// </summary> - public QueryOverProjectionBuilder<R, S, T> SelectMin(Expression<Func<object>> expression) + public QueryOverProjectionBuilder<TReturn, TRoot, TSubType> SelectMin(Expression<Func<object>> expression) { PushProjection(Projections.Min(expression)); return this; @@ -179,7 +179,7 @@ /// <summary> /// A projected property value /// </summary> - public QueryOverProjectionBuilder<R, S, T> Select(Expression<Func<T, object>> expression) + public QueryOverProjectionBuilder<TReturn, TRoot, TSubType> Select(Expression<Func<TSubType, object>> expression) { PushProjection(Projections.Property(expression)); return this; @@ -188,13 +188,13 @@ /// <summary> /// A projected property value /// </summary> - public QueryOverProjectionBuilder<R, S, T> Select(Expression<Func<object>> expression) + public QueryOverProjectionBuilder<TReturn, TRoot, TSubType> Select(Expression<Func<object>> expression) { PushProjection(Projections.Property(expression)); return this; } - public QueryOverProjectionBuilder<R, S, T> SelectSubQuery<U>(QueryOver<U> detachedQueryOver) + public QueryOverProjectionBuilder<TReturn, TRoot, TSubType> SelectSubQuery<U>(QueryOver<U> detachedQueryOver) { PushProjection(Projections.SubQuery(detachedQueryOver)); return this; @@ -203,7 +203,7 @@ /// <summary> /// A property value sum /// </summary> - public QueryOverProjectionBuilder<R, S, T> SelectSum(Expression<Func<T, object>> expression) + public QueryOverProjectionBuilder<TReturn, TRoot, TSubType> SelectSum(Expression<Func<TSubType, object>> expression) { PushProjection(Projections.Sum(expression)); return this; @@ -212,7 +212,7 @@ /// <summary> /// A property value sum /// </summary> - public QueryOverProjectionBuilder<R, S, T> SelectSum(Expression<Func<object>> expression) + public QueryOverProjectionBuilder<TReturn, TRoot, TSubType> 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-30 03:21:02 UTC (rev 4875) +++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverRestrictionBuilder.cs 2009-11-30 13:28:06 UTC (rev 4876) @@ -10,51 +10,51 @@ namespace NHibernate.Criterion.Lambda { - public class QueryOverRestrictionBuilder<S,T> : QueryOverRestrictionBuilderBase<QueryOver<S,T>, S, T> + public class QueryOverRestrictionBuilder<TRoot,TSubType> : QueryOverRestrictionBuilderBase<QueryOver<TRoot,TSubType>, TRoot, TSubType> { - public QueryOverRestrictionBuilder(QueryOver<S,T> root, string propertyName) + public QueryOverRestrictionBuilder(QueryOver<TRoot,TSubType> root, string propertyName) : base(root, propertyName) { } } - public class IQueryOverRestrictionBuilder<S,T> : QueryOverRestrictionBuilderBase<IQueryOver<S,T>, S, T> + public class IQueryOverRestrictionBuilder<TRoot,TSubType> : QueryOverRestrictionBuilderBase<IQueryOver<TRoot,TSubType>, TRoot, TSubType> { - public IQueryOverRestrictionBuilder(IQueryOver<S,T> root, string propertyName) + public IQueryOverRestrictionBuilder(IQueryOver<TRoot,TSubType> root, string propertyName) : base(root, propertyName) { } } - public class QueryOverRestrictionBuilderBase<R,S,T> - where R : IQueryOver<S,T> + public class QueryOverRestrictionBuilderBase<TReturn,TRoot,TSubType> + where TReturn : IQueryOver<TRoot,TSubType> { public class LambdaBetweenBuilder { - private R root; + private TReturn root; private string propertyName; private object lo; - public LambdaBetweenBuilder(R root, string propertyName, object lo) + public LambdaBetweenBuilder(TReturn root, string propertyName, object lo) { this.root = root; this.propertyName = propertyName; this.lo = lo; } - public R And(object hi) + public TReturn And(object hi) { - return (R)root.And(Restrictions.Between(propertyName, lo, hi)); + return (TReturn)root.And(Restrictions.Between(propertyName, lo, hi)); } } - private R root; + private TReturn root; private string propertyName; /// <summary> /// Constructed with property name /// </summary> - public QueryOverRestrictionBuilderBase(R root, string propertyName) + public QueryOverRestrictionBuilderBase(TReturn root, string propertyName) { this.root = root; this.propertyName = propertyName; @@ -71,97 +71,97 @@ /// <summary> /// Apply an "in" constraint to the named property /// </summary> - public R IsIn(ICollection values) + public TReturn IsIn(ICollection values) { - return (R)root.And(Restrictions.In(propertyName, values)); + return (TReturn)root.And(Restrictions.In(propertyName, values)); } /// <summary> /// Apply an "in" constraint to the named property /// </summary> - public R IsIn(object[] values) + public TReturn IsIn(object[] values) { - return (R)root.And(Restrictions.In(propertyName, values)); + return (TReturn)root.And(Restrictions.In(propertyName, values)); } /// <summary> /// Apply an "in" constraint to the named property /// </summary> - public R IsInG<T>(ICollection<T> values) + public TReturn IsInG<T>(ICollection<T> values) { - return (R)root.And(Restrictions.InG(propertyName, values)); + return (TReturn)root.And(Restrictions.InG(propertyName, values)); } /// <summary> /// A case-insensitive "like", similar to Postgres "ilike" operator /// </summary> - public R IsInsensitiveLike(object value) + public TReturn IsInsensitiveLike(object value) { - return (R)root.And(Restrictions.InsensitiveLike(propertyName, value)); + return (TReturn)root.And(Restrictions.InsensitiveLike(propertyName, value)); } /// <summary> /// A case-insensitive "like", similar to Postgres "ilike" operator /// </summary> - public R IsInsensitiveLike(string value, MatchMode matchMode) + public TReturn IsInsensitiveLike(string value, MatchMode matchMode) { - return (R)root.And(Restrictions.InsensitiveLike(propertyName, value, matchMode)); + return (TReturn)root.And(Restrictions.InsensitiveLike(propertyName, value, matchMode)); } /// <summary> /// Apply an "is empty" constraint to the named property /// </summary> - public R IsEmpty + public TReturn IsEmpty { - get { return (R)root.And(Restrictions.IsEmpty(propertyName)); } + get { return (TReturn)root.And(Restrictions.IsEmpty(propertyName)); } } /// <summary> /// Apply a "not is empty" constraint to the named property /// </summary> - public R IsNotEmpty + public TReturn IsNotEmpty { - get { return (R)root.And(Restrictions.IsNotEmpty(propertyName)); } + get { return (TReturn)root.And(Restrictions.IsNotEmpty(propertyName)); } } /// <summary> /// Apply an "is null" constraint to the named property /// </summary> - public R IsNull + public TReturn IsNull { - get { return (R)root.And(Restrictions.IsNull(propertyName)); } + get { return (TReturn)root.And(Restrictions.IsNull(propertyName)); } } /// <summary> /// Apply an "not is null" constraint to the named property /// </summary> - public R IsNotNull + public TReturn IsNotNull { - get { return (R)root.And(Restrictions.IsNotNull(propertyName)); } + get { return (TReturn)root.And(Restrictions.IsNotNull(propertyName)); } } /// <summary> /// Apply a "like" constraint to the named property /// </summary> - public R IsLike(object value) + public TReturn IsLike(object value) { - return (R)root.And(Restrictions.Like(propertyName, value)); + return (TReturn)root.And(Restrictions.Like(propertyName, value)); } /// <summary> /// Apply a "like" constraint to the named property /// </summary> - public R IsLike(string value, MatchMode matchMode) + public TReturn IsLike(string value, MatchMode matchMode) { - return (R)root.And(Restrictions.Like(propertyName, value, matchMode)); + return (TReturn)root.And(Restrictions.Like(propertyName, value, matchMode)); } /// <summary> /// Apply a "like" constraint to the named property /// </summary> - public R IsLike(string value, MatchMode matchMode, char? escapeChar) + public TReturn IsLike(string value, MatchMode matchMode, char? escapeChar) { - return (R)root.And(Restrictions.Like(propertyName, value, matchMode, escapeChar)); + return (TReturn)root.And(Restrictions.Like(propertyName, value, matchMode, escapeChar)); } } Modified: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryBuilder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryBuilder.cs 2009-11-30 03:21:02 UTC (rev 4875) +++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryBuilder.cs 2009-11-30 13:28:06 UTC (rev 4876) @@ -9,30 +9,30 @@ namespace NHibernate.Criterion.Lambda { - public class QueryOverSubqueryBuilder<S,T> : QueryOverSubqueryBuilderBase<QueryOver<S,T>, S, T, QueryOverSubqueryPropertyBuilder<S,T>> + public class QueryOverSubqueryBuilder<TRoot,TSubType> : QueryOverSubqueryBuilderBase<QueryOver<TRoot,TSubType>, TRoot, TSubType, QueryOverSubqueryPropertyBuilder<TRoot,TSubType>> { - public QueryOverSubqueryBuilder(QueryOver<S,T> root) + public QueryOverSubqueryBuilder(QueryOver<TRoot,TSubType> root) : base(root) { } } - public class IQueryOverSubqueryBuilder<S,T> : QueryOverSubqueryBuilderBase<IQueryOver<S,T>, S, T, IQueryOverSubqueryPropertyBuilder<S,T>> + public class IQueryOverSubqueryBuilder<TRoot,TSubType> : QueryOverSubqueryBuilderBase<IQueryOver<TRoot,TSubType>, TRoot, TSubType, IQueryOverSubqueryPropertyBuilder<TRoot,TSubType>> { - public IQueryOverSubqueryBuilder(IQueryOver<S,T> root) + public IQueryOverSubqueryBuilder(IQueryOver<TRoot,TSubType> root) : base(root) { } } - public class QueryOverSubqueryBuilderBase<R, S, T, B> - where R : IQueryOver<S,T> - where B : QueryOverSubqueryPropertyBuilderBase, new() + public class QueryOverSubqueryBuilderBase<TReturn, TRoot, TSubType, TBuilderType> + where TReturn : IQueryOver<TRoot,TSubType> + where TBuilderType : QueryOverSubqueryPropertyBuilderBase, new() { - protected R root; + protected TReturn root; - protected QueryOverSubqueryBuilderBase(R root) + protected QueryOverSubqueryBuilderBase(TReturn root) { this.root = root; } @@ -40,7 +40,7 @@ /// <summary> /// Add an Exists subquery criterion /// </summary> - public R WhereExists<U>(QueryOver<U> detachedQuery) + public TReturn WhereExists<U>(QueryOver<U> detachedQuery) { root.And(Subqueries.Exists(detachedQuery.DetachedCriteria)); return root; @@ -49,7 +49,7 @@ /// <summary> /// Add a NotExists subquery criterion /// </summary> - public R WhereNotExists<U>(QueryOver<U> detachedQuery) + public TReturn WhereNotExists<U>(QueryOver<U> detachedQuery) { root.And(Subqueries.NotExists(detachedQuery.DetachedCriteria)); return root; @@ -59,9 +59,9 @@ /// Subquery expression in the format /// .Where(t => t.Property [==, !=, >, etc.] detachedQueryOver.As<propertyType>()) /// </summary> - public R Where(Expression<Func<T, bool>> expression) + public TReturn Where(Expression<Func<TSubType, bool>> expression) { - AbstractCriterion criterion = ExpressionProcessor.ProcessSubquery<T>(LambdaSubqueryType.Exact, expression); + AbstractCriterion criterion = ExpressionProcessor.ProcessSubquery<TSubType>(LambdaSubqueryType.Exact, expression); root.And(criterion); return root; } @@ -70,7 +70,7 @@ /// Subquery expression in the format /// .Where(() => alias.Property [==, !=, >, etc.] detachedQueryOver.As<propertyType>()) /// </summary> - public R Where(Expression<Func<bool>> expression) + public TReturn Where(Expression<Func<bool>> expression) { AbstractCriterion criterion = ExpressionProcessor.ProcessSubquery(LambdaSubqueryType.Exact, expression); root.And(criterion); @@ -81,9 +81,9 @@ /// Subquery expression in the format /// .WhereAll(t => t.Property [==, !=, >, etc.] detachedQueryOver.As<propertyType>()) /// </summary> - public R WhereAll(Expression<Func<T, bool>> expression) + public TReturn WhereAll(Expression<Func<TSubType, bool>> expression) { - AbstractCriterion criterion = ExpressionProcessor.ProcessSubquery<T>(LambdaSubqueryType.All, expression); + AbstractCriterion criterion = ExpressionProcessor.ProcessSubquery<TSubType>(LambdaSubqueryType.All, expression); root.And(criterion); return root; } @@ -92,7 +92,7 @@ /// Subquery expression in the format /// .WhereAll(() => alias.Property [==, !=, >, etc.] detachedQueryOver.As<propertyType>()) /// </summary> - public R WhereAll(Expression<Func<bool>> expression) + public TReturn WhereAll(Expression<Func<bool>> expression) { AbstractCriterion criterion = ExpressionProcessor.ProcessSubquery(LambdaSubqueryType.All, expression); root.And(criterion); @@ -103,9 +103,9 @@ /// Subquery expression in the format /// .WhereSome(t => t.Property [==, !=, >, etc.] detachedQueryOver.As<propertyType>()) /// </summary> - public R WhereSome(Expression<Func<T, bool>> expression) + public TReturn WhereSome(Expression<Func<TSubType, bool>> expression) { - AbstractCriterion criterion = ExpressionProcessor.ProcessSubquery<T>(LambdaSubqueryType.Some, expression); + AbstractCriterion criterion = ExpressionProcessor.ProcessSubquery<TSubType>(LambdaSubqueryType.Some, expression); root.And(criterion); return root; } @@ -114,28 +114,28 @@ /// Subquery expression in the format /// .WhereSome(() => alias.Property [==, !=, >, etc.] detachedQueryOver.As<propertyType>()) /// </summary> - public R WhereSome(Expression<Func<bool>> expression) + public TReturn WhereSome(Expression<Func<bool>> expression) { AbstractCriterion criterion = ExpressionProcessor.ProcessSubquery(LambdaSubqueryType.Some, expression); root.And(criterion); return root; } - public B WhereProperty(Expression<Func<T, object>> expression) + public TBuilderType WhereProperty(Expression<Func<TSubType, object>> expression) { string property = ExpressionProcessor.FindMemberExpression(expression.Body); - return (B)new B().Set(root, property, null); + return (TBuilderType)new TBuilderType().Set(root, property, null); } - public B WhereProperty(Expression<Func<object>> expression) + public TBuilderType WhereProperty(Expression<Func<object>> expression) { string property = ExpressionProcessor.FindMemberExpression(expression.Body); - return (B)new B().Set(root, property, null); + return (TBuilderType)new TBuilderType().Set(root, property, null); } - public B WhereValue(object value) + public TBuilderType WhereValue(object value) { - return (B)new B().Set(root, null, value); + return (TBuilderType)new TBuilderType().Set(root, null, value); } } Modified: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryPropertyBuilder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryPropertyBuilder.cs 2009-11-30 03:21:02 UTC (rev 4875) +++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryPropertyBuilder.cs 2009-11-30 13:28:06 UTC (rev 4876) @@ -9,7 +9,7 @@ namespace NHibernate.Criterion.Lambda { - public class QueryOverSubqueryPropertyBuilder<S,T> : QueryOverSubqueryPropertyBuilderBase<QueryOver<S,T>, S, T> + public class QueryOverSubqueryPropertyBuilder<TRoot,TSubType> : QueryOverSubqueryPropertyBuilderBase<QueryOver<TRoot,TSubType>, TRoot, TSubType> { public QueryOverSubqueryPropertyBuilder() @@ -17,7 +17,7 @@ } - public class IQueryOverSubqueryPropertyBuilder<S,T> : QueryOverSubqueryPropertyBuilderBase<IQueryOver<S,T>, S, T> + public class IQueryOverSubqueryPropertyBuilder<TRoot,TSubType> : QueryOverSubqueryPropertyBuilderBase<IQueryOver<TRoot,TSubType>, TRoot, TSubType> { public IQueryOverSubqueryPropertyBuilder() @@ -32,11 +32,11 @@ internal abstract QueryOverSubqueryPropertyBuilderBase Set(object root, string path, object value); } - public class QueryOverSubqueryPropertyBuilderBase<R, S, T> : QueryOverSubqueryPropertyBuilderBase - where R : IQueryOver<S,T> + public class QueryOverSubqueryPropertyBuilderBase<TReturn, TRoot, TSubType> : QueryOverSubqueryPropertyBuilderBase + where TReturn : IQueryOver<TRoot,TSubType> { - protected R root; + protected TReturn root; protected string path; protected object value; @@ -46,7 +46,7 @@ internal override QueryOverSubqueryPropertyBuilderBase Set(object root, string path, object value) { - this.root = (R)root; + this.root = (TReturn)root; this.path = path; this.value = value; return this; @@ -71,7 +71,7 @@ /// Add a property equal subquery criterion /// </summary> /// <param name="detachedCriteria">detached subquery</param> - public R Eq<U>(QueryOver<U> detachedCriteria) + public TReturn Eq<U>(QueryOver<U> detachedCriteria) { AddSubquery(Subqueries.PropertyEq, Subqueries.Eq, detachedCriteria); return root; @@ -81,7 +81,7 @@ /// Add a property equal all subquery criterion /// </summary> /// <param name="detachedCriteria">detached subquery</param> - public R EqAll<U>(QueryOver<U> detachedCriteria) + public TReturn EqAll<U>(QueryOver<U> detachedCriteria) { AddSubquery(Subqueries.PropertyEqAll, Subqueries.EqAll, detachedCriteria); return root; @@ -91,7 +91,7 @@ /// Create a property greater than or equal subquery criterion /// </summary> /// <param name="detachedCriteria">detached subquery</param> - public R Ge<U>(QueryOver<U> detachedCriteria) + public TReturn Ge<U>(QueryOver<U> detachedCriteria) { AddSubquery(Subqueries.PropertyGe, Subqueries.Ge, detachedCriteria); return root; @@ -101,7 +101,7 @@ /// Create a property greater than or equal all subquery criterion /// </summary> /// <param name="detachedCriteria">detached subquery</param> - public R GeAll<U>(QueryOver<U> detachedCriteria) + public TReturn GeAll<U>(QueryOver<U> detachedCriteria) { AddSubquery(Subqueries.PropertyGeAll, Subqueries.GeAll, detachedCriteria); return root; @@ -111,7 +111,7 @@ /// Create a property greater than or equal some subquery criterion /// </summary> /// <param name="detachedCriteria">detached subquery</param> - public R GeSome<U>(QueryOver<U> detachedCriteria) + public TReturn GeSome<U>(QueryOver<U> detachedCriteria) { AddSubquery(Subqueries.PropertyGeSome, Subqueries.GeSome, detachedCriteria); return root; @@ -121,7 +121,7 @@ /// Create a property greater than subquery criterion /// </summary> /// <param name="detachedCriteria">detached subquery</param> - public R Gt<U>(QueryOver<U> detachedCriteria) + public TReturn Gt<U>(QueryOver<U> detachedCriteria) { AddSubquery(Subqueries.PropertyGt, Subqueries.Gt, detachedCriteria); return root; @@ -131,7 +131,7 @@ /// Create a property greater than all subquery criterion /// </summary> /// <param name="detachedCriteria">detached subquery</param> - public R GtAll<U>(QueryOver<U> detachedCriteria) + public TReturn GtAll<U>(QueryOver<U> detachedCriteria) { AddSubquery(Subqueries.PropertyGtAll, Subqueries.GtAll, detachedCriteria); return root; @@ -141,7 +141,7 @@ /// Create a property greater than some subquery criterion /// </summary> /// <param name="detachedCriteria">detached subquery</param> - public R GtSome<U>(QueryOver<U> detachedCriteria) + public TReturn GtSome<U>(QueryOver<U> detachedCriteria) { AddSubquery(Subqueries.PropertyGtSome, Subqueries.GtSome, detachedCriteria); return root; @@ -151,7 +151,7 @@ /// Create a property in subquery criterion /// </summary> /// <param name="detachedCriteria">detached subquery</param> - public R In<U>(QueryOver<U> detachedCriteria) + public TReturn In<U>(QueryOver<U> detachedCriteria) { AddSubquery(Subqueries.PropertyIn, Subqueries.In, detachedCriteria); return root; @@ -161,7 +161,7 @@ /// Create a property less than or equal subquery criterion /// </summary> /// <param name="detachedCriteria">detached subquery</param> - public R Le<U>(QueryOver<U> detachedCriteria) + public TReturn Le<U>(QueryOver<U> detachedCriteria) { AddSubquery(Subqueries.PropertyLe, Subqueries.Le, detachedCriteria); return root; @@ -171,7 +171,7 @@ /// Create a property less than or equal all subquery criterion /// </summary> /// <param name="detachedCriteria">detached subquery</param> - public R LeAll<U>(QueryOver<U> detachedCriteria) + public TReturn LeAll<U>(QueryOver<U> detachedCriteria) { AddSubquery(Subqueries.PropertyLeAll, Subqueries.LeAll, detachedCriteria); return root; @@ -181,7 +181,7 @@ /// Create a property less than or equal some subquery criterion /// </summary> /// <param name="detachedCriteria">detached subquery</param> - public R LeSome<U>(QueryOver<U> detachedCriteria) + public TReturn LeSome<U>(QueryOver<U> detachedCriteria) { AddSubquery(Subqueries.PropertyLeSome, Subqueries.LeSome, detachedCriteria); return root; @@ -191,7 +191,7 @@ /// Create a property less than subquery criterion /// </summary> /// <param name="detachedCriteria">detached subquery</param> - public R Lt<U>(QueryOver<U> detachedCriteria) + public TReturn Lt<U>(QueryOver<U> detachedCriteria) { AddSubquery(Subqueries.PropertyLt, Subqueries.Lt, detachedCriteria); return root; @@ -201,7 +201,7 @@ /// Create a property less than all subquery criterion /// </summary> /// <param name="detachedCriteria">detached subquery</param> - public R LtAll<U>(QueryOver<U> detachedCriteria) + public TReturn LtAll<U>(QueryOver<U> detachedCriteria) { AddSubquery(Subqueries.PropertyLtAll, Subqueries.LtAll, detachedCriteria); return root; @@ -211,7 +211,7 @@ /// Create a property less than some subquery criterion /// </summary> /// <param name="detachedCriteria">detached subquery</param> - public R LtSome<U>(QueryOver<U> detachedCriteria) + public TReturn LtSome<U>(QueryOver<U> detachedCriteria) { AddSubquery(Subqueries.PropertyLtSome, Subqueries.LtSome, detachedCriteria); return root; @@ -221,7 +221,7 @@ /// Create a property not equal subquery criterion /// </summary> /// <param name="detachedCriteria">detached subquery</param> - public R Ne<U>(QueryOver<U> detachedCriteria) + public TReturn Ne<U>(QueryOver<U> detachedCriteria) { AddSubquery(Subqueries.PropertyNe, Subqueries.Ne, detachedCriteria); return root; @@ -231,7 +231,7 @@ /// Create a property not in subquery criterion /// </summary> /// <param name="detachedCriteria">detached subquery</param> - public R NotIn<U>(QueryOver<U> detachedCriteria) + public TReturn NotIn<U>(QueryOver<U> detachedCriteria) { AddSubquery(Subqueries.PropertyNotIn, Subqueries.NotIn, detachedCriteria); return root; Modified: trunk/nhibernate/src/NHibernate/Criterion/QueryOver.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/QueryOver.cs 2009-11-30 03:21:02 UTC (rev 4875) +++ trunk/nhibernate/src/NHibernate/Criterion/QueryOver.cs 2009-11-30 13:28:06 UTC (rev 4876) @@ -4,6 +4,7 @@ using System.Linq.Expressions; using NHibernate.Criterion.Lambda; +using NHibernate.Engine; using NHibernate.Impl; using NHibernate.SqlCommand; @@ -14,8 +15,8 @@ public class QueryOver { - protected ICriteria _criteria; - protected CriteriaImpl _impl; + protected ICriteria criteria; + protected CriteriaImpl impl; protected QueryOver() { } @@ -31,74 +32,83 @@ public ICriteria UnderlyingCriteria { - get { return _criteria; } + get { return criteria; } } public DetachedCriteria DetachedCriteria { - get { return new DetachedCriteria(_impl, _impl); } + get { return new DetachedCriteria(impl, impl); } } } [Serializable] - public class QueryOver<T> : QueryOver, IQueryOver<T> + public class QueryOver<TRoot> : QueryOver, IQueryOver<TRoot> { - private IList<T> List() + private IList<TRoot> List() { - return _criteria.List<T>(); + return criteria.List<TRoot>(); } private IList<U> List<U>() { - return _criteria.List<U>(); + return criteria.List<U>(); } - private T UniqueResult() + private TRoot UniqueResult() { - return _criteria.UniqueResult<T>(); + return criteria.UniqueResult<TRoot>(); } private U UniqueResult<U>() { - return _criteria.UniqueResult<U>(); + return criteria.UniqueResult<U>(); } - private IEnumerable<T> Future() + private IEnumerable<TRoot> Future() { - return _criteria.Future<T>(); + return criteria.Future<TRoot>(); } private IEnumerable<U> Future<U>() { - return _criteria.Future<U>(); + return criteria.Future<U>(); } - private IFutureValue<T> FutureValue() + private IFutureValue<TRoot> FutureValue() { - return _criteria.FutureValue<T>(); + return criteria.FutureValue<TRoot>(); } private IFutureValue<U> FutureValue<U>() { - return _criteria.FutureValue<U>(); + return criteria.FutureValue<U>(); } /// <summary> - /// Get an executable instance of <c>IQueryOver<T></c>, + /// Get an executable instance of <c>IQueryOver<TRoot></c>, /// to actually run the query.</summary> - public IQueryOver<T> GetExecutableQueryOver(ISession session) + public IQueryOver<TRoot,TRoot> GetExecutableQueryOver(ISession session) { - _impl.Session = session.GetSessionImplementation(); - return this; + impl.Session = session.GetSessionImplementation(); + return new QueryOver<TRoot,TRoot>(impl); } /// <summary> + /// Get an executable instance of <c>IQueryOver<TRoot></c>, + /// to actually run the query.</summary> + public IQueryOver<TRoot,TRoot> GetExecutableQueryOver(IStatelessSession session) + { + impl.Session = (ISessionImplementor)session; + return new QueryOver<TRoot,TRoot>(impl); + } + + /// <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> + /// <typeparam name="S">type returned (projected) by query</typeparam> /// <returns>throws an exception if evaluated directly at runtime.</returns> public S As<S>() { @@ -106,358 +116,358 @@ } - ICriteria IQueryOver<T>.UnderlyingCriteria + ICriteria IQueryOver<TRoot>.UnderlyingCriteria { get { return UnderlyingCriteria; } } - IList<T> IQueryOver<T>.List() + IList<TRoot> IQueryOver<TRoot>.List() { return List(); } - IList<U> IQueryOver<T>.List<U>() + IList<U> IQueryOver<TRoot>.List<U>() { return List<U>(); } - T IQueryOver<T>.UniqueResult() + TRoot IQueryOver<TRoot>.UniqueResult() { return UniqueResult(); } - U IQueryOver<T>.UniqueResult<U>() + U IQueryOver<TRoot>.UniqueResult<U>() { return UniqueResult<U>(); } - IEnumerable<T> IQueryOver<T>.Future() + IEnumerable<TRoot> IQueryOver<TRoot>.Future() { return Future(); } - IEnumerable<U> IQueryOver<T>.Future<U>() + IEnumerable<U> IQueryOver<TRoot>.Future<U>() { return Future<U>(); } - IFutureValue<T> IQueryOver<T>.FutureValue() + IFutureValue<TRoot> IQueryOver<TRoot>.FutureValue() { return FutureValue(); } - IFutureValue<U> IQueryOver<T>.FutureValue<U>() + IFutureValue<U> IQueryOver<TRoot>.FutureValue<U>() { return FutureValue<U>(); } } /// <summary> - /// Implementation of the <see cref="IQueryOver<T>"/> interface + /// Implementation of the <see cref="IQueryOver<TRoot, TSubType>"/> interface /// </summary> [Serializable] - public class QueryOver<R,T> : QueryOver<R>, IQueryOver<R,T> + public class QueryOver<TRoot,TSubType> : QueryOver<TRoot>, IQueryOver<TRoot,TSubType> { protected internal QueryOver() { - _impl = new CriteriaImpl(typeof(T), null); - _criteria = _impl; + impl = new CriteriaImpl(typeof(TRoot), null); + criteria = impl; } - protected internal QueryOver(Expression<Func<T>> alias) + protected internal QueryOver(Expression<Func<TSubType>> alias) { string aliasPath = ExpressionProcessor.FindMemberExpression(alias.Body); - _impl = new CriteriaImpl(typeof(T), aliasPath, null); - _criteria = _impl; + impl = new CriteriaImpl(typeof(TRoot), aliasPath, null); + criteria = impl; } protected internal QueryOver(CriteriaImpl impl) { - _impl = impl; - _criteria = impl; + this.impl = impl; + this.criteria = impl; } protected internal QueryOver(CriteriaImpl rootImpl, ICriteria criteria) { - _impl = rootImpl; - _criteria = criteria; + this.impl = rootImpl; + this.criteria = criteria; } - public QueryOver<R,T> And(Expression<Func<T, bool>> expression) + public QueryOver<TRoot,TSubType> And(Expression<Func<TSubType, bool>> expression) { return Add(expression); } - public QueryOver<R,T> And(Expression<Func<bool>> expression) + public QueryOver<TRoot,TSubType> And(Expression<Func<bool>> expression) { return Add(expression); } - public QueryOver<R,T> And(ICriterion expression) + public QueryOver<TRoot,TSubType> And(ICriterion expression) { return Add(expression); } - public QueryOver<R,T> AndNot(Expression<Func<T, bool>> expression) + public QueryOver<TRoot,TSubType> AndNot(Expression<Func<TSubType, bool>> expression) { return AddNot(expression); } - public QueryOver<R,T> AndNot(Expression<Func<bool>> expression) + public QueryOver<TRoot,TSubType> AndNot(Expression<Func<bool>> expression) { return AddNot(expression); } - public QueryOverRestrictionBuilder<R,T> AndRestrictionOn(Expression<Func<T, object>> expression) + public QueryOverRestrictionBuilder<TRoot,TSubType> AndRestrictionOn(Expression<Func<TSubType, object>> expression) { - return new QueryOverRestrictionBuilder<R,T>(this, ExpressionProcessor.FindMemberExpression(expression.Body)); + return new QueryOverRestrictionBuilder<TRoot,TSubType>(this, ExpressionProcessor.FindMemberExpression(expression.Body)); } - public QueryOverRestrictionBuilder<R,T> AndRestrictionOn(Expression<Func<object>> expression) + public QueryOverRestrictionBuilder<TRoot,TSubType> AndRestrictionOn(Expression<Func<object>> expression) { - return new QueryOverRestrictionBuilder<R,T>(this, ExpressionProcessor.FindMemberExpression(expression.Body)); + return new QueryOverRestrictionBuilder<TRoot,TSubType>(this, ExpressionProcessor.FindMemberExpression(expression.Body)); } - public QueryOver<R,T> Where(Expression<Func<T, bool>> expression) + public QueryOver<TRoot,TSubType> Where(Expression<Func<TSubType, bool>> expression) { return Add(expression); } - public QueryOver<R,T> Where(Expression<Func<bool>> expression) + public QueryOver<TRoot,TSubType> Where(Expression<Func<bool>> expression) { return Add(expression); } - public QueryOver<R,T> Where(ICriterion expression) + public QueryOver<TRoot,TSubType> Where(ICriterion expression) { return Add(expression); } - public QueryOver<R,T> WhereNot(Expression<Func<T, bool>> expression) + public QueryOver<TRoot,TSubType> WhereNot(Expression<Func<TSubType, bool>> expression) { return AddNot(expression); } - public QueryOver<R,T> WhereNot(Expression<Func<bool>> expression) + public QueryOver<TRoot,TSubType> WhereNot(Expression<Func<bool>> expression) { return AddNot(expression); } - public QueryOverRestrictionBuilder<R,T> WhereRestrictionOn(Expression<Func<T, object>> expression) + public QueryOverRestrictionBuilder<TRoot,TSubType> WhereRestrictionOn(Expression<Func<TSubType, object>> expression) { - return new QueryOverRestrictionBuilder<R,T>(this, ExpressionProcessor.FindMemberExpression(expression.Body)); + return new QueryOverRestrictionBuilder<TRoot,TSubType>(this, ExpressionProcessor.FindMemberExpression(expression.Body)); } - public QueryOverRestrictionBuilder<R,T> WhereRestrictionOn(Expression<Func<object>> expression) + public QueryOverRestrictionBuilder<TRoot,TSubType> WhereRestrictionOn(Expression<Func<object>> expression) { - return new QueryOverRestrictionBuilder<R,T>(this, ExpressionProcessor.FindMemberExpression(expression.Body)); + return new QueryOverRestrictionBuilder<TRoot,TSubType>(this, ExpressionProcessor.FindMemberExpression(expression.Body)); } - public QueryOver<R,T> Select(params Expression<Func<R, object>>[] projections) + public QueryOver<TRoot,TSubType> Select(params Expression<Func<TRoot, object>>[] projections) { List<IProjection> projectionList = new List<IProjection>(); foreach (var projection in projections) projectionList.Add(Projections.Property(ExpressionProcessor.FindMemberExpression(projection.Body))); - _criteria.SetProjection(projectionList.ToArray()); + criteria.SetProjection(projectionList.ToArray()); return this; } - public QueryOver<R,T> Select(params IProjection[] projections) + public QueryOver<TRoot,TSubType> Select(params IProjection[] projections) { - _criteria.SetProjection(projections); + criteria.SetProjection(projections); return this; } - QueryOverProjectionBuilder<QueryOver<R,T>, R, T> SelectList + QueryOverProjectionBuilder<QueryOver<TRoot,TSubType>, TRoot, TSubType> SelectList { - get { return new QueryOverProjectionBuilder<QueryOver<R,T>, R, T>(this, this); } + get { return new QueryOverProjectionBuilder<QueryOver<TRoot,TSubType>, TRoot, TSubType>(this, this); } } - public QueryOverOrderBuilder<R,T> OrderBy(Expression<Func<T, object>> path) + public QueryOverOrderBuilder<TRoot,TSubType> OrderBy(Expression<Func<TSubType, object>> path) { - return new QueryOverOrderBuilder<R,T>(this, path); + return new QueryOverOrderBuilder<TRoot,TSubType>(this, path); } - public QueryOverOrderBuilder<R,T> OrderBy(Expression<Func<object>> path) + public QueryOverOrderBuilder<TRoot,TSubType> OrderBy(Expression<Func<object>> path) { - return new QueryOverOrderBuilder<R,T>(this, path); + return new QueryOverOrderBuilder<TRoot,TSubType>(this, path); } - public QueryOverOrderBuilder<R,T> ThenBy(Expression<Func<T, object>> path) + public QueryOverOrderBuilder<TRoot,TSubType> ThenBy(Expression<Func<TSubType, object>> path) { - return new QueryOverOrderBuilder<R,T>(this, path); + return new QueryOverOrderBuilder<TRoot,TSubType>(this, path); } - public QueryOverOrderBuilder<R,T> ThenBy(Expression<Func<object>> path) + public QueryOverOrderBuilder<TRoot,TSubType> ThenBy(Expression<Func<object>> path) { - return new QueryOverOrderBuilder<R,T>(this, path); + return new QueryOverOrderBuilder<TRoot,TSubType>(this, path); } - public QueryOver<R,T> Skip(int firstResult) + public QueryOver<TRoot,TSubType> Skip(int firstResult) { - _criteria.SetFirstResult(firstResult); + criteria.SetFirstResult(firstResult); return this; } - public QueryOver<R,T> Take(int maxResults) + public QueryOver<TRoot,TSubType> Take(int maxResults) { - _criteria.SetMaxResults(maxResults); + criteria.SetMaxResults(maxResults); return this; } - public QueryOver<R,T> Cacheable() + public QueryOver<TRoot,TSubType> Cacheable() { - _criteria.SetCacheable(true); + criteria.SetCacheable(true); return this; } - public QueryOver<R,T> CacheMode(CacheMode cacheMode) + public QueryOver<TRoot,TSubType> CacheMode(CacheMode cacheMode) { - _criteria.SetCacheMode(cacheMode); + criteria.SetCacheMode(cacheMode); return this; } - public QueryOver<R,T> CacheRegion(string cacheRegion) + public QueryOver<TRoot,TSubType> CacheRegion(string cacheRegion) { - _criteria.SetCacheRegion(cacheRegion); + criteria.SetCacheRegion(cacheRegion); return this; } - public QueryOverSubqueryBuilder<R,T> WithSubquery + public QueryOverSubqueryBuilder<TRoot,TSubType> WithSubquery { - get { return new QueryOverSubqueryBuilder<R,T>(this); } + get { return new QueryOverSubqueryBuilder<TRoot,TSubType>(this); } } - public QueryOverFetchBuilder<R,T> Fetch(Expression<Func<R, object>> path) + public QueryOverFetchBuilder<TRoot,TSubType> Fetch(Expression<Func<TRoot, object>> path) { - return new QueryOverFetchBuilder<R,T>(this, path); + return new QueryOverFetchBuilder<TRoot,TSubType>(this, path); } - public QueryOverLockBuilder<R,T> Lock() + public QueryOverLockBuilder<TRoot,TSubType> Lock() { - return new QueryOverLockBuilder<R,T>(this, null); + return new QueryOverLockBuilder<TRoot,TSubType>(this, null); } - public QueryOverLockBuilder<R,T> Lock(Expression<Func<object>> alias) + public QueryOverLockBuilder<TRoot,TSubType> Lock(Expression<Func<object>> alias) { - return new QueryOverLockBuilder<R,T>(this, alias); + return new QueryOverLockBuilder<TRoot,TSubType>(this, alias); } - public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<T, U>> path) + public QueryOver<TRoot,U> JoinQueryOver<U>(Expression<Func<TSubType, U>> path) { - return new QueryOver<R,U>(_impl, - _criteria.CreateCriteria( + return new QueryOver<TRoot,U>(impl, + criteria.CreateCriteria( ExpressionProcessor.FindMemberExpression(path.Body))); } - public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<U>> path) + public QueryOver<TRoot,U> JoinQueryOver<U>(Expression<Func<U>> path) { - return new QueryOver<R,U>(_impl, - _criteria.CreateCriteria( + return new QueryOver<TRoot,U>(impl, + criteria.CreateCriteria( ExpressionProcessor.FindMemberExpression(path.Body))); } - public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<T, U>> path, Expression<Func<U>> alias) + public QueryOver<TRoot,U> JoinQueryOver<U>(Expression<Func<TSubType, U>> path, Expression<Func<U>> alias) { - return new QueryOver<R,U>(_impl, - _criteria.CreateCriteria( + return new QueryOver<TRoot,U>(impl, + criteria.CreateCriteria( ExpressionProcessor.FindMemberExpression(path.Body), ExpressionProcessor.FindMemberExpression(alias.Body))); } - public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias) + public QueryOver<TRoot,U> JoinQueryOver<U>(Expression<Func<U>> path, Expression<Func<U>> alias) { - return new QueryOver<R,U>(_impl, - _criteria.CreateCriteria( + return new QueryOver<TRoot,U>(impl, + criteria.CreateCriteria( ExpressionProcessor.FindMemberExpression(path.Body), ExpressionProcessor.FindMemberExpression(alias.Body))); } - public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<T, U>> path, JoinType joinType) + public QueryOver<TRoot,U> JoinQueryOver<U>(Expression<Func<TSubType, U>> path, JoinType joinType) { - return new QueryOver<R,U>(_impl, - _criteria.CreateCriteria( + return new QueryOver<TRoot,U>(impl, + criteria.CreateCriteria( ExpressionProcessor.FindMemberExpression(path.Body), joinType)); } - public QueryOver<R,U> JoinQueryOver<U>(Expression<Func<U>> path,... [truncated message content] |