|
From: <ric...@us...> - 2009-11-10 13:32:39
|
Revision: 4825
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4825&view=rev
Author: ricbrown
Date: 2009-11-10 13:32:28 +0000 (Tue, 10 Nov 2009)
Log Message:
-----------
Tidied QueryOver builder classes inside separate folder/namespace.
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Criterion/QueryOver.cs
trunk/nhibernate/src/NHibernate/IQueryOver.cs
trunk/nhibernate/src/NHibernate/NHibernate.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate/Criterion/Lambda/
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/QueryOverSubqueryBuilder.cs
trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryPropertyBuilder.cs
Removed Paths:
-------------
trunk/nhibernate/src/NHibernate/Criterion/QueryOverFetchBuilder.cs
trunk/nhibernate/src/NHibernate/Criterion/QueryOverJoinBuilder.cs
trunk/nhibernate/src/NHibernate/Criterion/QueryOverLockBuilder.cs
trunk/nhibernate/src/NHibernate/Criterion/QueryOverOrderBuilder.cs
trunk/nhibernate/src/NHibernate/Criterion/QueryOverSubqueryBuilder.cs
trunk/nhibernate/src/NHibernate/Criterion/QueryOverSubqueryPropertyBuilder.cs
Copied: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverFetchBuilder.cs (from rev 4822, trunk/nhibernate/src/NHibernate/Criterion/QueryOverFetchBuilder.cs)
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverFetchBuilder.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverFetchBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825)
@@ -0,0 +1,69 @@
+
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+
+using NHibernate.Impl;
+using NHibernate.SqlCommand;
+
+namespace NHibernate.Criterion
+{
+
+ public class QueryOverFetchBuilder<T> : QueryOverFetchBuilderBase<QueryOver<T>, T>
+ {
+
+ public QueryOverFetchBuilder(QueryOver<T> root, Expression<Func<T, object>> path)
+ : base(root, path) { }
+
+ }
+
+ public class IQueryOverFetchBuilder<T> : QueryOverFetchBuilderBase<IQueryOver<T>, T>
+ {
+
+ public IQueryOverFetchBuilder(IQueryOver<T> root, Expression<Func<T, object>> path)
+ : base(root, path) { }
+
+ }
+
+ public class QueryOverFetchBuilderBase<R, T> where R : IQueryOver<T>
+ {
+
+ protected R root;
+ protected string path;
+
+ protected QueryOverFetchBuilderBase(R root, Expression<Func<T, object>> path)
+ {
+ this.root = root;
+ this.path = ExpressionProcessor.FindMemberExpression(path.Body);
+ }
+
+ public R Eager
+ {
+ get
+ {
+ this.root.UnderlyingCriteria.SetFetchMode(path, FetchMode.Eager);
+ return this.root;
+ }
+ }
+
+ public R Lazy
+ {
+ get
+ {
+ this.root.UnderlyingCriteria.SetFetchMode(path, FetchMode.Lazy);
+ return this.root;
+ }
+ }
+
+ public R Default
+ {
+ get
+ {
+ this.root.UnderlyingCriteria.SetFetchMode(path, FetchMode.Default);
+ return this.root;
+ }
+ }
+
+ }
+
+}
Copied: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverJoinBuilder.cs (from rev 4824, trunk/nhibernate/src/NHibernate/Criterion/QueryOverJoinBuilder.cs)
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverJoinBuilder.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverJoinBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825)
@@ -0,0 +1,128 @@
+
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+
+using NHibernate.Impl;
+using NHibernate.SqlCommand;
+
+namespace NHibernate.Criterion.Lambda
+{
+
+ public class QueryOverJoinBuilder<T> : QueryOverJoinBuilderBase<QueryOver<T>, T>
+ {
+ public QueryOverJoinBuilder(QueryOver<T> root, JoinType joinType) : base(root, joinType) { }
+
+ public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, U>> path)
+ {
+ return root.JoinQueryOver<U>(path, joinType);
+ }
+
+ public QueryOver<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)
+ {
+ return root.JoinQueryOver<U>(path, alias, joinType);
+ }
+
+ public QueryOver<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)
+ {
+ return root.JoinQueryOver<U>(path, joinType);
+ }
+
+ public QueryOver<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)
+ {
+ return root.JoinQueryOver<U>(path, alias, joinType);
+ }
+
+ public QueryOver<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 IQueryOverJoinBuilder(IQueryOver<T> root, JoinType joinType) : base(root, joinType) { }
+
+ public IQueryOver<U> JoinQueryOver<U>(Expression<Func<T, U>> path)
+ {
+ return root.JoinQueryOver<U>(path, joinType);
+ }
+
+ public IQueryOver<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)
+ {
+ return root.JoinQueryOver<U>(path, alias, joinType);
+ }
+
+ public IQueryOver<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)
+ {
+ return root.JoinQueryOver<U>(path, joinType);
+ }
+
+ public IQueryOver<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)
+ {
+ return root.JoinQueryOver<U>(path, alias, joinType);
+ }
+
+ public IQueryOver<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>
+ {
+
+ protected R root;
+ protected JoinType joinType;
+
+ public QueryOverJoinBuilderBase(R root, JoinType joinType)
+ {
+ this.root = root;
+ this.joinType = joinType;
+ }
+
+ public R JoinAlias(Expression<Func<T, object>> path, Expression<Func<object>> alias)
+ {
+ return (R)root.JoinAlias(path, alias, joinType);
+ }
+
+ public R JoinAlias(Expression<Func<object>> path, Expression<Func<object>> alias)
+ {
+ return (R)root.JoinAlias(path, alias, joinType);
+ }
+
+ }
+
+}
Copied: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverLockBuilder.cs (from rev 4822, trunk/nhibernate/src/NHibernate/Criterion/QueryOverLockBuilder.cs)
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverLockBuilder.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverLockBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825)
@@ -0,0 +1,106 @@
+
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+
+using NHibernate.Impl;
+using NHibernate.SqlCommand;
+
+namespace NHibernate.Criterion.Lambda
+{
+
+ public class QueryOverLockBuilder<T> : QueryOverLockBuilderBase<QueryOver<T>, T>
+ {
+
+ public QueryOverLockBuilder(QueryOver<T> root, Expression<Func<object>> alias)
+ : base(root, alias) { }
+
+ }
+
+ public class IQueryOverLockBuilder<T> : QueryOverLockBuilderBase<IQueryOver<T>, T>
+ {
+
+ public IQueryOverLockBuilder(IQueryOver<T> root, Expression<Func<object>> alias)
+ : base(root, alias) { }
+
+ }
+
+ public class QueryOverLockBuilderBase<R, T> where R : IQueryOver<T>
+ {
+
+ protected R root;
+ protected string alias;
+
+ protected QueryOverLockBuilderBase(R root, Expression<Func<object>> alias)
+ {
+ this.root = root;
+
+ if (alias != null)
+ this.alias = ExpressionProcessor.FindMemberExpression(alias.Body);
+ }
+
+ private void SetLockMode(LockMode lockMode)
+ {
+ if (alias != null)
+ root.UnderlyingCriteria.SetLockMode(alias, lockMode);
+ else
+ root.UnderlyingCriteria.SetLockMode(lockMode);
+ }
+
+ public R Force
+ {
+ get
+ {
+ SetLockMode(LockMode.Force);
+ return this.root;
+ }
+ }
+
+ public R None
+ {
+ get
+ {
+ SetLockMode(LockMode.None);
+ return this.root;
+ }
+ }
+
+ public R Read
+ {
+ get
+ {
+ SetLockMode(LockMode.Read);
+ return this.root;
+ }
+ }
+
+ public R Upgrade
+ {
+ get
+ {
+ SetLockMode(LockMode.Upgrade);
+ return this.root;
+ }
+ }
+
+ public R UpgradeNoWait
+ {
+ get
+ {
+ SetLockMode(LockMode.UpgradeNoWait);
+ return this.root;
+ }
+ }
+
+ public R Write
+ {
+ get
+ {
+ SetLockMode(LockMode.Write);
+ return this.root;
+ }
+ }
+
+ }
+
+}
Copied: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverOrderBuilder.cs (from rev 4822, trunk/nhibernate/src/NHibernate/Criterion/QueryOverOrderBuilder.cs)
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverOrderBuilder.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverOrderBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825)
@@ -0,0 +1,72 @@
+
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+
+using NHibernate.Impl;
+using NHibernate.SqlCommand;
+
+namespace NHibernate.Criterion.Lambda
+{
+
+ public class QueryOverOrderBuilder<T> : QueryOverOrderBuilderBase<QueryOver<T>, T>
+ {
+
+ public QueryOverOrderBuilder(QueryOver<T> root, Expression<Func<T, object>> path) : base(root, path)
+ {}
+
+ public QueryOverOrderBuilder(QueryOver<T> root, Expression<Func<object>> path) : base(root, path)
+ {}
+
+ }
+
+ public class IQueryOverOrderBuilder<T> : QueryOverOrderBuilderBase<IQueryOver<T>, T>
+ {
+
+ public IQueryOverOrderBuilder(IQueryOver<T> root, Expression<Func<T, object>> path) : base(root, path)
+ {}
+
+ public IQueryOverOrderBuilder(IQueryOver<T> root, Expression<Func<object>> path) : base(root, path)
+ {}
+
+ }
+
+ public class QueryOverOrderBuilderBase<R, T> where R : IQueryOver<T>
+ {
+
+ protected R root;
+ protected LambdaExpression path;
+
+ protected QueryOverOrderBuilderBase(R root, Expression<Func<T, object>> path)
+ {
+ this.root = root;
+ this.path = path;
+ }
+
+ protected QueryOverOrderBuilderBase(R root, Expression<Func<object>> path)
+ {
+ this.root = root;
+ this.path = path;
+ }
+
+ public R Asc
+ {
+ get
+ {
+ this.root.UnderlyingCriteria.AddOrder(ExpressionProcessor.ProcessOrder(path, Order.Asc));
+ return this.root;
+ }
+ }
+
+ public R Desc
+ {
+ get
+ {
+ this.root.UnderlyingCriteria.AddOrder(ExpressionProcessor.ProcessOrder(path, Order.Desc));
+ return this.root;
+ }
+ }
+
+ }
+
+}
Copied: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryBuilder.cs (from rev 4823, trunk/nhibernate/src/NHibernate/Criterion/QueryOverSubqueryBuilder.cs)
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryBuilder.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825)
@@ -0,0 +1,64 @@
+
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+
+using NHibernate.Impl;
+using NHibernate.SqlCommand;
+
+namespace NHibernate.Criterion.Lambda
+{
+
+ public class QueryOverSubqueryBuilder<T> : QueryOverSubqueryBuilderBase<QueryOver<T>, T, QueryOverSubqueryPropertyBuilder<T>>
+ {
+
+ public QueryOverSubqueryBuilder(QueryOver<T> root)
+ : base(root) { }
+
+ }
+
+ public class IQueryOverSubqueryBuilder<T> : QueryOverSubqueryBuilderBase<IQueryOver<T>, T, IQueryOverSubqueryPropertyBuilder<T>>
+ {
+
+ public IQueryOverSubqueryBuilder(IQueryOver<T> root)
+ : base(root) { }
+
+ }
+
+ public class QueryOverSubqueryBuilderBase<R, T, S>
+ where R : IQueryOver<T>
+ where S : QueryOverSubqueryPropertyBuilderBase, new()
+ {
+
+ protected R root;
+
+ protected QueryOverSubqueryBuilderBase(R root)
+ {
+ this.root = root;
+ }
+
+ /// <summary>
+ /// Subquery expression in the format
+ /// .Where(t => t.Property [==, !=, >, etc.] detachedQueryOver.As<propertyType>())
+ /// </summary>
+ public R Where(Expression<Func<T, bool>> expression)
+ {
+ AbstractCriterion criterion = ExpressionProcessor.ProcessSubquery<T>(LambdaSubqueryType.Exact, expression);
+ root.And(criterion);
+ return root;
+ }
+
+ public S WhereProperty(Expression<Func<T, object>> expression)
+ {
+ string property = ExpressionProcessor.FindMemberExpression(expression.Body);
+ return (S)new S().Set(root, property, null);
+ }
+
+ public S WhereValue(object value)
+ {
+ return (S)new S().Set(root, null, value);
+ }
+
+ }
+
+}
Copied: trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryPropertyBuilder.cs (from rev 4823, trunk/nhibernate/src/NHibernate/Criterion/QueryOverSubqueryPropertyBuilder.cs)
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryPropertyBuilder.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate/Criterion/Lambda/QueryOverSubqueryPropertyBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825)
@@ -0,0 +1,152 @@
+
+using System;
+using System.Collections.Generic;
+using System.Linq.Expressions;
+
+using NHibernate.Impl;
+using NHibernate.SqlCommand;
+
+namespace NHibernate.Criterion.Lambda
+{
+
+ public class QueryOverSubqueryPropertyBuilder<T> : QueryOverSubqueryPropertyBuilderBase<QueryOver<T>, T>
+ {
+
+ public QueryOverSubqueryPropertyBuilder()
+ : base() { }
+
+ }
+
+ public class IQueryOverSubqueryPropertyBuilder<T> : QueryOverSubqueryPropertyBuilderBase<IQueryOver<T>, T>
+ {
+
+ public IQueryOverSubqueryPropertyBuilder()
+ : base() { }
+
+ }
+
+ public abstract class QueryOverSubqueryPropertyBuilderBase
+ {
+ protected QueryOverSubqueryPropertyBuilderBase() { }
+
+ internal abstract QueryOverSubqueryPropertyBuilderBase Set(object root, string path, object value);
+ }
+
+ public class QueryOverSubqueryPropertyBuilderBase<R, T> : QueryOverSubqueryPropertyBuilderBase
+ where R : IQueryOver<T>
+ {
+
+ protected R root;
+ protected string path;
+ protected object value;
+
+ protected QueryOverSubqueryPropertyBuilderBase()
+ {
+ }
+
+ internal override QueryOverSubqueryPropertyBuilderBase Set(object root, string path, object value)
+ {
+ this.root = (R)root;
+ this.path = path;
+ this.value = value;
+ return this;
+ }
+
+ private void AddSubquery<U>(
+ Func<string, DetachedCriteria, AbstractCriterion> propertyMethod,
+ Func<object, DetachedCriteria, AbstractCriterion> valueMethod,
+ QueryOver<U> detachedCriteria)
+ {
+ if (path != null)
+ {
+ root.And(propertyMethod(path, detachedCriteria.DetachedCriteria));
+ }
+ else
+ {
+ root.And(valueMethod(value, detachedCriteria.DetachedCriteria));
+ }
+ }
+
+ /// <summary>
+ /// Add a property equal subquery criterion
+ /// </summary>
+ /// <param name="detachedCriteria">detached subquery</param>
+ public R Eq<U>(QueryOver<U> detachedCriteria)
+ {
+ AddSubquery(Subqueries.PropertyEq, Subqueries.Eq, detachedCriteria);
+ return root;
+ }
+
+ /// <summary>
+ /// Create a property greater than or equal subquery criterion
+ /// </summary>
+ /// <param name="detachedCriteria">detached subquery</param>
+ public R Ge<U>(QueryOver<U> detachedCriteria)
+ {
+ AddSubquery(Subqueries.PropertyGe, Subqueries.Ge, detachedCriteria);
+ return root;
+ }
+
+ /// <summary>
+ /// Create a property greater than subquery criterion
+ /// </summary>
+ /// <param name="detachedCriteria">detached subquery</param>
+ public R Gt<U>(QueryOver<U> detachedCriteria)
+ {
+ AddSubquery(Subqueries.PropertyGt, Subqueries.Gt, detachedCriteria);
+ return root;
+ }
+
+ /// <summary>
+ /// Create a property in subquery criterion
+ /// </summary>
+ /// <param name="detachedCriteria">detached subquery</param>
+ public R In<U>(QueryOver<U> detachedCriteria)
+ {
+ AddSubquery(Subqueries.PropertyIn, Subqueries.In, detachedCriteria);
+ return root;
+ }
+
+ /// <summary>
+ /// Create a property less than or equal subquery criterion
+ /// </summary>
+ /// <param name="detachedCriteria">detached subquery</param>
+ public R Le<U>(QueryOver<U> detachedCriteria)
+ {
+ AddSubquery(Subqueries.PropertyLe, Subqueries.Le, detachedCriteria);
+ return root;
+ }
+
+ /// <summary>
+ /// Create a property less than subquery criterion
+ /// </summary>
+ /// <param name="detachedCriteria">detached subquery</param>
+ public R Lt<U>(QueryOver<U> detachedCriteria)
+ {
+ AddSubquery(Subqueries.PropertyLt, Subqueries.Lt, detachedCriteria);
+ return root;
+ }
+
+ /// <summary>
+ /// Create a property not equal subquery criterion
+ /// </summary>
+ /// <param name="detachedCriteria">detached subquery</param>
+ public R Ne<U>(QueryOver<U> detachedCriteria)
+ {
+ AddSubquery(Subqueries.PropertyNe, Subqueries.Ne, detachedCriteria);
+ return root;
+ }
+
+ /// <summary>
+ /// Create a property not in subquery criterion
+ /// </summary>
+ /// <param name="detachedCriteria">detached subquery</param>
+ public R 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-08 10:58:42 UTC (rev 4824)
+++ trunk/nhibernate/src/NHibernate/Criterion/QueryOver.cs 2009-11-10 13:32:28 UTC (rev 4825)
@@ -3,6 +3,7 @@
using System.Collections.Generic;
using System.Linq.Expressions;
+using NHibernate.Criterion.Lambda;
using NHibernate.Impl;
using NHibernate.SqlCommand;
Deleted: trunk/nhibernate/src/NHibernate/Criterion/QueryOverFetchBuilder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/QueryOverFetchBuilder.cs 2009-11-08 10:58:42 UTC (rev 4824)
+++ trunk/nhibernate/src/NHibernate/Criterion/QueryOverFetchBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825)
@@ -1,69 +0,0 @@
-
-using System;
-using System.Collections.Generic;
-using System.Linq.Expressions;
-
-using NHibernate.Impl;
-using NHibernate.SqlCommand;
-
-namespace NHibernate.Criterion
-{
-
- public class QueryOverFetchBuilder<T> : QueryOverFetchBuilderBase<QueryOver<T>, T>
- {
-
- public QueryOverFetchBuilder(QueryOver<T> root, Expression<Func<T, object>> path)
- : base(root, path) { }
-
- }
-
- public class IQueryOverFetchBuilder<T> : QueryOverFetchBuilderBase<IQueryOver<T>, T>
- {
-
- public IQueryOverFetchBuilder(IQueryOver<T> root, Expression<Func<T, object>> path)
- : base(root, path) { }
-
- }
-
- public class QueryOverFetchBuilderBase<R, T> where R : IQueryOver<T>
- {
-
- protected R root;
- protected string path;
-
- protected QueryOverFetchBuilderBase(R root, Expression<Func<T, object>> path)
- {
- this.root = root;
- this.path = ExpressionProcessor.FindMemberExpression(path.Body);
- }
-
- public R Eager
- {
- get
- {
- this.root.UnderlyingCriteria.SetFetchMode(path, FetchMode.Eager);
- return this.root;
- }
- }
-
- public R Lazy
- {
- get
- {
- this.root.UnderlyingCriteria.SetFetchMode(path, FetchMode.Lazy);
- return this.root;
- }
- }
-
- public R Default
- {
- get
- {
- this.root.UnderlyingCriteria.SetFetchMode(path, FetchMode.Default);
- return this.root;
- }
- }
-
- }
-
-}
Deleted: trunk/nhibernate/src/NHibernate/Criterion/QueryOverJoinBuilder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/QueryOverJoinBuilder.cs 2009-11-08 10:58:42 UTC (rev 4824)
+++ trunk/nhibernate/src/NHibernate/Criterion/QueryOverJoinBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825)
@@ -1,128 +0,0 @@
-
-using System;
-using System.Collections.Generic;
-using System.Linq.Expressions;
-
-using NHibernate.Impl;
-using NHibernate.SqlCommand;
-
-namespace NHibernate.Criterion
-{
-
- public class QueryOverJoinBuilder<T> : QueryOverJoinBuilderBase<QueryOver<T>, T>
- {
- public QueryOverJoinBuilder(QueryOver<T> root, JoinType joinType) : base(root, joinType) { }
-
- public QueryOver<U> JoinQueryOver<U>(Expression<Func<T, U>> path)
- {
- return root.JoinQueryOver<U>(path, joinType);
- }
-
- public QueryOver<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)
- {
- return root.JoinQueryOver<U>(path, alias, joinType);
- }
-
- public QueryOver<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)
- {
- return root.JoinQueryOver<U>(path, joinType);
- }
-
- public QueryOver<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)
- {
- return root.JoinQueryOver<U>(path, alias, joinType);
- }
-
- public QueryOver<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 IQueryOverJoinBuilder(IQueryOver<T> root, JoinType joinType) : base(root, joinType) { }
-
- public IQueryOver<U> JoinQueryOver<U>(Expression<Func<T, U>> path)
- {
- return root.JoinQueryOver<U>(path, joinType);
- }
-
- public IQueryOver<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)
- {
- return root.JoinQueryOver<U>(path, alias, joinType);
- }
-
- public IQueryOver<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)
- {
- return root.JoinQueryOver<U>(path, joinType);
- }
-
- public IQueryOver<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)
- {
- return root.JoinQueryOver<U>(path, alias, joinType);
- }
-
- public IQueryOver<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>
- {
-
- protected R root;
- protected JoinType joinType;
-
- public QueryOverJoinBuilderBase(R root, JoinType joinType)
- {
- this.root = root;
- this.joinType = joinType;
- }
-
- public R JoinAlias(Expression<Func<T, object>> path, Expression<Func<object>> alias)
- {
- return (R)root.JoinAlias(path, alias, joinType);
- }
-
- public R JoinAlias(Expression<Func<object>> path, Expression<Func<object>> alias)
- {
- return (R)root.JoinAlias(path, alias, joinType);
- }
-
- }
-
-}
Deleted: trunk/nhibernate/src/NHibernate/Criterion/QueryOverLockBuilder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/QueryOverLockBuilder.cs 2009-11-08 10:58:42 UTC (rev 4824)
+++ trunk/nhibernate/src/NHibernate/Criterion/QueryOverLockBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825)
@@ -1,106 +0,0 @@
-
-using System;
-using System.Collections.Generic;
-using System.Linq.Expressions;
-
-using NHibernate.Impl;
-using NHibernate.SqlCommand;
-
-namespace NHibernate.Criterion
-{
-
- public class QueryOverLockBuilder<T> : QueryOverLockBuilderBase<QueryOver<T>, T>
- {
-
- public QueryOverLockBuilder(QueryOver<T> root, Expression<Func<object>> alias)
- : base(root, alias) { }
-
- }
-
- public class IQueryOverLockBuilder<T> : QueryOverLockBuilderBase<IQueryOver<T>, T>
- {
-
- public IQueryOverLockBuilder(IQueryOver<T> root, Expression<Func<object>> alias)
- : base(root, alias) { }
-
- }
-
- public class QueryOverLockBuilderBase<R, T> where R : IQueryOver<T>
- {
-
- protected R root;
- protected string alias;
-
- protected QueryOverLockBuilderBase(R root, Expression<Func<object>> alias)
- {
- this.root = root;
-
- if (alias != null)
- this.alias = ExpressionProcessor.FindMemberExpression(alias.Body);
- }
-
- private void SetLockMode(LockMode lockMode)
- {
- if (alias != null)
- root.UnderlyingCriteria.SetLockMode(alias, lockMode);
- else
- root.UnderlyingCriteria.SetLockMode(lockMode);
- }
-
- public R Force
- {
- get
- {
- SetLockMode(LockMode.Force);
- return this.root;
- }
- }
-
- public R None
- {
- get
- {
- SetLockMode(LockMode.None);
- return this.root;
- }
- }
-
- public R Read
- {
- get
- {
- SetLockMode(LockMode.Read);
- return this.root;
- }
- }
-
- public R Upgrade
- {
- get
- {
- SetLockMode(LockMode.Upgrade);
- return this.root;
- }
- }
-
- public R UpgradeNoWait
- {
- get
- {
- SetLockMode(LockMode.UpgradeNoWait);
- return this.root;
- }
- }
-
- public R Write
- {
- get
- {
- SetLockMode(LockMode.Write);
- return this.root;
- }
- }
-
- }
-
-}
Deleted: trunk/nhibernate/src/NHibernate/Criterion/QueryOverOrderBuilder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/QueryOverOrderBuilder.cs 2009-11-08 10:58:42 UTC (rev 4824)
+++ trunk/nhibernate/src/NHibernate/Criterion/QueryOverOrderBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825)
@@ -1,72 +0,0 @@
-
-using System;
-using System.Collections.Generic;
-using System.Linq.Expressions;
-
-using NHibernate.Impl;
-using NHibernate.SqlCommand;
-
-namespace NHibernate.Criterion
-{
-
- public class QueryOverOrderBuilder<T> : QueryOverOrderBuilderBase<QueryOver<T>, T>
- {
-
- public QueryOverOrderBuilder(QueryOver<T> root, Expression<Func<T, object>> path) : base(root, path)
- {}
-
- public QueryOverOrderBuilder(QueryOver<T> root, Expression<Func<object>> path) : base(root, path)
- {}
-
- }
-
- public class IQueryOverOrderBuilder<T> : QueryOverOrderBuilderBase<IQueryOver<T>, T>
- {
-
- public IQueryOverOrderBuilder(IQueryOver<T> root, Expression<Func<T, object>> path) : base(root, path)
- {}
-
- public IQueryOverOrderBuilder(IQueryOver<T> root, Expression<Func<object>> path) : base(root, path)
- {}
-
- }
-
- public class QueryOverOrderBuilderBase<R, T> where R : IQueryOver<T>
- {
-
- protected R root;
- protected LambdaExpression path;
-
- protected QueryOverOrderBuilderBase(R root, Expression<Func<T, object>> path)
- {
- this.root = root;
- this.path = path;
- }
-
- protected QueryOverOrderBuilderBase(R root, Expression<Func<object>> path)
- {
- this.root = root;
- this.path = path;
- }
-
- public R Asc
- {
- get
- {
- this.root.UnderlyingCriteria.AddOrder(ExpressionProcessor.ProcessOrder(path, Order.Asc));
- return this.root;
- }
- }
-
- public R Desc
- {
- get
- {
- this.root.UnderlyingCriteria.AddOrder(ExpressionProcessor.ProcessOrder(path, Order.Desc));
- return this.root;
- }
- }
-
- }
-
-}
Deleted: trunk/nhibernate/src/NHibernate/Criterion/QueryOverSubqueryBuilder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/QueryOverSubqueryBuilder.cs 2009-11-08 10:58:42 UTC (rev 4824)
+++ trunk/nhibernate/src/NHibernate/Criterion/QueryOverSubqueryBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825)
@@ -1,64 +0,0 @@
-
-using System;
-using System.Collections.Generic;
-using System.Linq.Expressions;
-
-using NHibernate.Impl;
-using NHibernate.SqlCommand;
-
-namespace NHibernate.Criterion
-{
-
- public class QueryOverSubqueryBuilder<T> : QueryOverSubqueryBuilderBase<QueryOver<T>, T, QueryOverSubqueryPropertyBuilder<T>>
- {
-
- public QueryOverSubqueryBuilder(QueryOver<T> root)
- : base(root) { }
-
- }
-
- public class IQueryOverSubqueryBuilder<T> : QueryOverSubqueryBuilderBase<IQueryOver<T>, T, IQueryOverSubqueryPropertyBuilder<T>>
- {
-
- public IQueryOverSubqueryBuilder(IQueryOver<T> root)
- : base(root) { }
-
- }
-
- public class QueryOverSubqueryBuilderBase<R, T, S>
- where R : IQueryOver<T>
- where S : QueryOverSubqueryPropertyBuilderBase, new()
- {
-
- protected R root;
-
- protected QueryOverSubqueryBuilderBase(R root)
- {
- this.root = root;
- }
-
- /// <summary>
- /// Subquery expression in the format
- /// .Where(t => t.Property [==, !=, >, etc.] detachedQueryOver.As<propertyType>())
- /// </summary>
- public R Where(Expression<Func<T, bool>> expression)
- {
- AbstractCriterion criterion = ExpressionProcessor.ProcessSubquery<T>(LambdaSubqueryType.Exact, expression);
- root.And(criterion);
- return root;
- }
-
- public S WhereProperty(Expression<Func<T, object>> expression)
- {
- string property = ExpressionProcessor.FindMemberExpression(expression.Body);
- return (S)new S().Set(root, property, null);
- }
-
- public S WhereValue(object value)
- {
- return (S)new S().Set(root, null, value);
- }
-
- }
-
-}
Deleted: trunk/nhibernate/src/NHibernate/Criterion/QueryOverSubqueryPropertyBuilder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Criterion/QueryOverSubqueryPropertyBuilder.cs 2009-11-08 10:58:42 UTC (rev 4824)
+++ trunk/nhibernate/src/NHibernate/Criterion/QueryOverSubqueryPropertyBuilder.cs 2009-11-10 13:32:28 UTC (rev 4825)
@@ -1,152 +0,0 @@
-
-using System;
-using System.Collections.Generic;
-using System.Linq.Expressions;
-
-using NHibernate.Impl;
-using NHibernate.SqlCommand;
-
-namespace NHibernate.Criterion
-{
-
- public class QueryOverSubqueryPropertyBuilder<T> : QueryOverSubqueryPropertyBuilderBase<QueryOver<T>, T>
- {
-
- public QueryOverSubqueryPropertyBuilder()
- : base() { }
-
- }
-
- public class IQueryOverSubqueryPropertyBuilder<T> : QueryOverSubqueryPropertyBuilderBase<IQueryOver<T>, T>
- {
-
- public IQueryOverSubqueryPropertyBuilder()
- : base() { }
-
- }
-
- public abstract class QueryOverSubqueryPropertyBuilderBase
- {
- protected QueryOverSubqueryPropertyBuilderBase() { }
-
- internal abstract QueryOverSubqueryPropertyBuilderBase Set(object root, string path, object value);
- }
-
- public class QueryOverSubqueryPropertyBuilderBase<R, T> : QueryOverSubqueryPropertyBuilderBase
- where R : IQueryOver<T>
- {
-
- protected R root;
- protected string path;
- protected object value;
-
- protected QueryOverSubqueryPropertyBuilderBase()
- {
- }
-
- internal override QueryOverSubqueryPropertyBuilderBase Set(object root, string path, object value)
- {
- this.root = (R)root;
- this.path = path;
- this.value = value;
- return this;
- }
-
- private void AddSubquery<U>(
- Func<string, DetachedCriteria, AbstractCriterion> propertyMethod,
- Func<object, DetachedCriteria, AbstractCriterion> valueMethod,
- QueryOver<U> detachedCriteria)
- {
- if (path != null)
- {
- root.And(propertyMethod(path, detachedCriteria.DetachedCriteria));
- }
- else
- {
- root.And(valueMethod(value, detachedCriteria.DetachedCriteria));
- }
- }
-
- /// <summary>
- /// Add a property equal subquery criterion
- /// </summary>
- /// <param name="detachedCriteria">detached subquery</param>
- public R Eq<U>(QueryOver<U> detachedCriteria)
- {
- AddSubquery(Subqueries.PropertyEq, Subqueries.Eq, detachedCriteria);
- return root;
- }
-
- /// <summary>
- /// Create a property greater than or equal subquery criterion
- /// </summary>
- /// <param name="detachedCriteria">detached subquery</param>
- public R Ge<U>(QueryOver<U> detachedCriteria)
- {
- AddSubquery(Subqueries.PropertyGe, Subqueries.Ge, detachedCriteria);
- return root;
- }
-
- /// <summary>
- /// Create a property greater than subquery criterion
- /// </summary>
- /// <param name="detachedCriteria">detached subquery</param>
- public R Gt<U>(QueryOver<U> detachedCriteria)
- {
- AddSubquery(Subqueries.PropertyGt, Subqueries.Gt, detachedCriteria);
- return root;
- }
-
- /// <summary>
- /// Create a property in subquery criterion
- /// </summary>
- /// <param name="detachedCriteria">detached subquery</param>
- public R In<U>(QueryOver<U> detachedCriteria)
- {
- AddSubquery(Subqueries.PropertyIn, Subqueries.In, detachedCriteria);
- return root;
- }
-
- /// <summary>
- /// Create a property less than or equal subquery criterion
- /// </summary>
- /// <param name="detachedCriteria">detached subquery</param>
- public R Le<U>(QueryOver<U> detachedCriteria)
- {
- AddSubquery(Subqueries.PropertyLe, Subqueries.Le, detachedCriteria);
- return root;
- }
-
- /// <summary>
- /// Create a property less than subquery criterion
- /// </summary>
- /// <param name="detachedCriteria">detached subquery</param>
- public R Lt<U>(QueryOver<U> detachedCriteria)
- {
- AddSubquery(Subqueries.PropertyLt, Subqueries.Lt, detachedCriteria);
- return root;
- }
-
- /// <summary>
- /// Create a property not equal subquery criterion
- /// </summary>
- /// <param name="detachedCriteria">detached subquery</param>
- public R Ne<U>(QueryOver<U> detachedCriteria)
- {
- AddSubquery(Subqueries.PropertyNe, Subqueries.Ne, detachedCriteria);
- return root;
- }
-
- /// <summary>
- /// Create a property not in subquery criterion
- /// </summary>
- /// <param name="detachedCriteria">detached subquery</param>
- public R NotIn<U>(QueryOver<U> detachedCriteria)
- {
- AddSubquery(Subqueries.PropertyNotIn, Subqueries.NotIn, detachedCriteria);
- return root;
- }
-
- }
-
-}
Modified: trunk/nhibernate/src/NHibernate/IQueryOver.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/IQueryOver.cs 2009-11-08 10:58:42 UTC (rev 4824)
+++ trunk/nhibernate/src/NHibernate/IQueryOver.cs 2009-11-10 13:32:28 UTC (rev 4825)
@@ -4,6 +4,7 @@
using System.Linq.Expressions;
using NHibernate.Criterion;
+using NHibernate.Criterion.Lambda;
using NHibernate.SqlCommand;
namespace NHibernate
Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2009-11-08 10:58:42 UTC (rev 4824)
+++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2009-11-10 13:32:28 UTC (rev 4825)
@@ -505,12 +505,12 @@
<Compile Include="Context\WcfOperationSessionContext.cs" />
<Compile Include="Criterion\GroupedProjection.cs" />
<Compile Include="Criterion\IPropertyProjection.cs" />
- <Compile Include="Criterion\QueryOverFetchBuilder.cs" />
- <Compile Include="Criterion\QueryOverJoinBuilder.cs" />
- <Compile Include="Criterion\QueryOverLockBuilder.cs" />
- <Compile Include="Criterion\QueryOverOrderBuilder.cs" />
- <Compile Include="Criterion\QueryOverSubqueryBuilder.cs" />
- <Compile Include="Criterion\QueryOverSubqueryPropertyBuilder.cs" />
+ <Compile Include="Criterion\Lambda\QueryOverFetchBuilder.cs" />
+ <Compile Include="Criterion\Lambda\QueryOverJoinBuilder.cs" />
+ <Compile Include="Criterion\Lambda\QueryOverLockBuilder.cs" />
+ <Compile Include="Criterion\Lambda\QueryOverOrderBuilder.cs" />
+ <Compile Include="Criterion\Lambda\QueryOverSubqueryBuilder.cs" />
+ <Compile Include="Criterion\Lambda\QueryOverSubqueryPropertyBuilder.cs" />
<Compile Include="Dialect\MsSql2008Dialect.cs" />
<Compile Include="Dialect\InformixDialect0940.cs" />
<Compile Include="Dialect\InformixDialect1000.cs" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|