diff --git a/AmalgamationTool/DynamORM.Amalgamation.cs b/AmalgamationTool/DynamORM.Amalgamation.cs index 7289be2..7fb9fe2 100644 --- a/AmalgamationTool/DynamORM.Amalgamation.cs +++ b/AmalgamationTool/DynamORM.Amalgamation.cs @@ -7458,12 +7458,66 @@ namespace DynamORM } public interface IDynamicTypedSelectScopeQueryBuilder : IDynamicSelectQueryBuilder { + IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification); IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors); IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors); IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors); } + public interface IDynamicTypedSelectScopeQueryBuilder : IDynamicSelectQueryBuilder + { + IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification); + IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors); + IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors); + IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors); + } + public interface IDynamicTypedSelectScopeQueryBuilder : IDynamicSelectQueryBuilder + { + IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification); + IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors); + IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors); + IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors); + } + public interface IDynamicTypedSelectScopeQueryBuilder : IDynamicSelectQueryBuilder + { + IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification); + IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors); + IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors); + IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors); + } + public interface IDynamicTypedSelectScopeQueryBuilder : IDynamicSelectQueryBuilder + { + IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification); + IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors); + IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors); + IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors); + } + public interface IDynamicTypedSelectScopeQueryBuilder : IDynamicSelectQueryBuilder + { + IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification); + IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors); + IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors); + IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors); + } + public interface IDynamicTypedSelectScopeQueryBuilder : IDynamicSelectQueryBuilder + { + IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors); + IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors); + IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors); + } /// Typed update query builder for mapped entities. /// Mapped entity type. public interface IDynamicTypedUpdateQueryBuilder : IDynamicUpdateQueryBuilder @@ -7865,11 +7919,7 @@ namespace DynamORM { JoinType = DynamicJoinType.Join; } - public TSelf As(string alias) - { - Alias = alias; - return (TSelf)this; - } + public TSelf As(string alias) { Alias = alias; return (TSelf)this; } public TSelf Inner() { JoinType = DynamicJoinType.Inner; CustomJoinType = null; return (TSelf)this; } public TSelf Join() { JoinType = DynamicJoinType.Join; CustomJoinType = null; return (TSelf)this; } public TSelf Left() { JoinType = DynamicJoinType.Left; CustomJoinType = null; return (TSelf)this; } @@ -7878,19 +7928,8 @@ namespace DynamORM public TSelf LeftOuter() { JoinType = DynamicJoinType.LeftOuter; CustomJoinType = null; return (TSelf)this; } public TSelf RightOuter() { JoinType = DynamicJoinType.RightOuter; CustomJoinType = null; return (TSelf)this; } public TSelf FullOuter() { JoinType = DynamicJoinType.FullOuter; CustomJoinType = null; return (TSelf)this; } - - public TSelf Type(string joinType) - { - if (string.IsNullOrEmpty(joinType)) - throw new ArgumentNullException("joinType"); - CustomJoinType = joinType.Trim(); - return (TSelf)this; - } - public TSelf NoLock(bool use = true) - { - UseNoLock = use; - return (TSelf)this; - } + public TSelf Type(string joinType) { if (string.IsNullOrEmpty(joinType)) throw new ArgumentNullException("joinType"); CustomJoinType = joinType.Trim(); return (TSelf)this; } + public TSelf NoLock(bool use = true) { UseNoLock = use; return (TSelf)this; } } public sealed class TypedScopeJoinBuilder : TypedScopeJoinBuilderBase> { @@ -8090,6 +8129,138 @@ namespace DynamORM return this; } } + public sealed class TypedScopeJoinBuilder : TypedScopeJoinBuilderBase> + { + internal Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> OnSqlPredicate { get; private set; } + internal string OnRawCondition { get; private set; } + + public TypedScopeJoinBuilder OnSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) + throw new ArgumentNullException("predicate"); + OnSqlPredicate = predicate; + OnRawCondition = null; + return this; + } + public TypedScopeJoinBuilder OnRaw(string condition) + { + if (string.IsNullOrEmpty(condition)) + throw new ArgumentNullException("condition"); + OnRawCondition = condition.Trim(); + OnSqlPredicate = null; + return this; + } + } + public sealed class TypedScopeJoinBuilder : TypedScopeJoinBuilderBase> + { + internal Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> OnSqlPredicate { get; private set; } + internal string OnRawCondition { get; private set; } + + public TypedScopeJoinBuilder OnSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) + throw new ArgumentNullException("predicate"); + OnSqlPredicate = predicate; + OnRawCondition = null; + return this; + } + public TypedScopeJoinBuilder OnRaw(string condition) + { + if (string.IsNullOrEmpty(condition)) + throw new ArgumentNullException("condition"); + OnRawCondition = condition.Trim(); + OnSqlPredicate = null; + return this; + } + } + public sealed class TypedScopeJoinBuilder : TypedScopeJoinBuilderBase> + { + internal Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> OnSqlPredicate { get; private set; } + internal string OnRawCondition { get; private set; } + + public TypedScopeJoinBuilder OnSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) + throw new ArgumentNullException("predicate"); + OnSqlPredicate = predicate; + OnRawCondition = null; + return this; + } + public TypedScopeJoinBuilder OnRaw(string condition) + { + if (string.IsNullOrEmpty(condition)) + throw new ArgumentNullException("condition"); + OnRawCondition = condition.Trim(); + OnSqlPredicate = null; + return this; + } + } + public sealed class TypedScopeJoinBuilder : TypedScopeJoinBuilderBase> + { + internal Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> OnSqlPredicate { get; private set; } + internal string OnRawCondition { get; private set; } + + public TypedScopeJoinBuilder OnSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) + throw new ArgumentNullException("predicate"); + OnSqlPredicate = predicate; + OnRawCondition = null; + return this; + } + public TypedScopeJoinBuilder OnRaw(string condition) + { + if (string.IsNullOrEmpty(condition)) + throw new ArgumentNullException("condition"); + OnRawCondition = condition.Trim(); + OnSqlPredicate = null; + return this; + } + } + public sealed class TypedScopeJoinBuilder : TypedScopeJoinBuilderBase> + { + internal Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> OnSqlPredicate { get; private set; } + internal string OnRawCondition { get; private set; } + + public TypedScopeJoinBuilder OnSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) + throw new ArgumentNullException("predicate"); + OnSqlPredicate = predicate; + OnRawCondition = null; + return this; + } + public TypedScopeJoinBuilder OnRaw(string condition) + { + if (string.IsNullOrEmpty(condition)) + throw new ArgumentNullException("condition"); + OnRawCondition = condition.Trim(); + OnSqlPredicate = null; + return this; + } + } + public sealed class TypedScopeJoinBuilder : TypedScopeJoinBuilderBase> + { + internal Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> OnSqlPredicate { get; private set; } + internal string OnRawCondition { get; private set; } + + public TypedScopeJoinBuilder OnSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) + throw new ArgumentNullException("predicate"); + OnSqlPredicate = predicate; + OnRawCondition = null; + return this; + } + public TypedScopeJoinBuilder OnRaw(string condition) + { + if (string.IsNullOrEmpty(condition)) + throw new ArgumentNullException("condition"); + OnRawCondition = condition.Trim(); + OnSqlPredicate = null; + return this; + } + } namespace Extensions { internal static class DynamicHavingQueryExtensions @@ -12325,11 +12496,7 @@ namespace DynamORM internal abstract class DynamicTypedSelectScopeQueryBuilderBase : IDynamicSelectQueryBuilder { protected readonly DynamicTypedSelectQueryBuilder Builder; - - protected DynamicTypedSelectScopeQueryBuilderBase(DynamicTypedSelectQueryBuilder builder) - { - Builder = builder; - } + protected DynamicTypedSelectScopeQueryBuilderBase(DynamicTypedSelectQueryBuilder builder) { Builder = builder; } public DynamicDatabase Database { get { return Builder.Database; } } public IList Tables { get { return Builder.Tables; } } public IDictionary Parameters { get { return Builder.Parameters; } } @@ -12338,7 +12505,6 @@ namespace DynamORM public List> OnCreateTemporaryParameter { get { return Builder.OnCreateTemporaryParameter; } set { Builder.OnCreateTemporaryParameter = value; } } public List> OnCreateParameter { get { return Builder.OnCreateParameter; } set { Builder.OnCreateParameter = value; } } public bool IsDisposed { get { return Builder.IsDisposed; } } - public void Dispose() { Builder.Dispose(); } public IDbCommand FillCommand(IDbCommand command) { return Builder.FillCommand(command); } public string CommandText() { return Builder.CommandText(); } @@ -12374,13 +12540,10 @@ namespace DynamORM public IDynamicSelectQueryBuilder Limit(int? limit) { Builder.Limit(limit); return this; } public IDynamicSelectQueryBuilder Offset(int? offset) { Builder.Offset(offset); return this; } public IDynamicSelectQueryBuilder Distinct(bool distinct = true) { Builder.Distinct(distinct); return this; } - protected TypedJoinBuilder ApplyJoinSpec(TypedJoinBuilder builder, string alias, string customJoinType, DynamicJoinType joinType, bool noLock, string condition) { - if (!string.IsNullOrEmpty(alias)) - builder.As(alias); - if (!string.IsNullOrEmpty(customJoinType)) - builder.Type(customJoinType); + if (!string.IsNullOrEmpty(alias)) builder.As(alias); + if (!string.IsNullOrEmpty(customJoinType)) builder.Type(customJoinType); else { switch (joinType) @@ -12395,10 +12558,8 @@ namespace DynamORM default: builder.Inner(); break; } } - if (noLock) - builder.NoLock(); - if (!string.IsNullOrEmpty(condition)) - builder.OnRaw(condition); + if (noLock) builder.NoLock(); + if (!string.IsNullOrEmpty(condition)) builder.OnRaw(condition); return builder; } protected void AddSelect(TypedSqlSelectable item) { Builder.AddSelectSqlSelector(item); } @@ -12410,21 +12571,15 @@ namespace DynamORM internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder { private readonly string _alias1; - - internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1) - : base(builder) + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1) : base(builder) { _alias1 = alias1; } public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) { - if (specification == null) - throw new ArgumentNullException("specification"); - + if (specification == null) throw new ArgumentNullException("specification"); TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); - if (spec == null) - throw new ArgumentException("Join specification cannot resolve to null.", "specification"); - + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); string alias = string.IsNullOrEmpty(spec.Alias) ? "t2" : spec.Alias; string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(alias))); Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); @@ -12432,8 +12587,7 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedSqlSelectable> selector, params Func, TypedSqlSelectable>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddSelect(selector(new TypedTableContext(_alias1))); if (selectors != null) foreach (var item in selectors) @@ -12442,22 +12596,19 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddWhere(predicate(new TypedTableContext(_alias1))); return this; } public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddHaving(predicate(new TypedTableContext(_alias1))); return this; } public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedSqlExpression> selector, params Func, TypedSqlExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddGroupBy(selector(new TypedTableContext(_alias1))); if (selectors != null) foreach (var item in selectors) @@ -12466,8 +12617,7 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedSqlOrderExpression> selector, params Func, TypedSqlOrderExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddOrderBy(selector(new TypedTableContext(_alias1))); if (selectors != null) foreach (var item in selectors) @@ -12479,22 +12629,16 @@ namespace DynamORM { private readonly string _alias1; private readonly string _alias2; - - internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2) - : base(builder) + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2) : base(builder) { _alias1 = alias1; _alias2 = alias2; } public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) { - if (specification == null) - throw new ArgumentNullException("specification"); - + if (specification == null) throw new ArgumentNullException("specification"); TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); - if (spec == null) - throw new ArgumentException("Join specification cannot resolve to null.", "specification"); - + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); string alias = string.IsNullOrEmpty(spec.Alias) ? "t3" : spec.Alias; string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(alias))); Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); @@ -12502,8 +12646,7 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedSqlSelectable>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2))); if (selectors != null) foreach (var item in selectors) @@ -12512,22 +12655,19 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2))); return this; } public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2))); return this; } public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedSqlExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2))); if (selectors != null) foreach (var item in selectors) @@ -12536,8 +12676,7 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedSqlOrderExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2))); if (selectors != null) foreach (var item in selectors) @@ -12550,9 +12689,7 @@ namespace DynamORM private readonly string _alias1; private readonly string _alias2; private readonly string _alias3; - - internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3) - : base(builder) + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3) : base(builder) { _alias1 = alias1; _alias2 = alias2; @@ -12560,13 +12697,9 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) { - if (specification == null) - throw new ArgumentNullException("specification"); - + if (specification == null) throw new ArgumentNullException("specification"); TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); - if (spec == null) - throw new ArgumentException("Join specification cannot resolve to null.", "specification"); - + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); string alias = string.IsNullOrEmpty(spec.Alias) ? "t4" : spec.Alias; string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(alias))); Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); @@ -12574,8 +12707,7 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3))); if (selectors != null) foreach (var item in selectors) @@ -12584,22 +12716,19 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3))); return this; } public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3))); return this; } public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3))); if (selectors != null) foreach (var item in selectors) @@ -12608,8 +12737,7 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3))); if (selectors != null) foreach (var item in selectors) @@ -12623,9 +12751,7 @@ namespace DynamORM private readonly string _alias2; private readonly string _alias3; private readonly string _alias4; - - internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4) - : base(builder) + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4) : base(builder) { _alias1 = alias1; _alias2 = alias2; @@ -12634,13 +12760,9 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) { - if (specification == null) - throw new ArgumentNullException("specification"); - + if (specification == null) throw new ArgumentNullException("specification"); TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); - if (spec == null) - throw new ArgumentException("Join specification cannot resolve to null.", "specification"); - + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); string alias = string.IsNullOrEmpty(spec.Alias) ? "t5" : spec.Alias; string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(alias))); Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); @@ -12648,8 +12770,7 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4))); if (selectors != null) foreach (var item in selectors) @@ -12658,22 +12779,19 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4))); return this; } public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4))); return this; } public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4))); if (selectors != null) foreach (var item in selectors) @@ -12682,8 +12800,7 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4))); if (selectors != null) foreach (var item in selectors) @@ -12698,9 +12815,7 @@ namespace DynamORM private readonly string _alias3; private readonly string _alias4; private readonly string _alias5; - - internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5) - : base(builder) + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5) : base(builder) { _alias1 = alias1; _alias2 = alias2; @@ -12710,13 +12825,9 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) { - if (specification == null) - throw new ArgumentNullException("specification"); - + if (specification == null) throw new ArgumentNullException("specification"); TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); - if (spec == null) - throw new ArgumentException("Join specification cannot resolve to null.", "specification"); - + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); string alias = string.IsNullOrEmpty(spec.Alias) ? "t6" : spec.Alias; string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(alias))); Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); @@ -12724,8 +12835,7 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5))); if (selectors != null) foreach (var item in selectors) @@ -12734,22 +12844,19 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5))); return this; } public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5))); return this; } public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5))); if (selectors != null) foreach (var item in selectors) @@ -12758,8 +12865,7 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5))); if (selectors != null) foreach (var item in selectors) @@ -12775,9 +12881,7 @@ namespace DynamORM private readonly string _alias4; private readonly string _alias5; private readonly string _alias6; - - internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6) - : base(builder) + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6) : base(builder) { _alias1 = alias1; _alias2 = alias2; @@ -12788,13 +12892,9 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) { - if (specification == null) - throw new ArgumentNullException("specification"); - + if (specification == null) throw new ArgumentNullException("specification"); TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); - if (spec == null) - throw new ArgumentException("Join specification cannot resolve to null.", "specification"); - + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); string alias = string.IsNullOrEmpty(spec.Alias) ? "t7" : spec.Alias; string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(alias))); Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); @@ -12802,8 +12902,7 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6))); if (selectors != null) foreach (var item in selectors) @@ -12812,22 +12911,19 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6))); return this; } public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6))); return this; } public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6))); if (selectors != null) foreach (var item in selectors) @@ -12836,8 +12932,7 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6))); if (selectors != null) foreach (var item in selectors) @@ -12854,9 +12949,7 @@ namespace DynamORM private readonly string _alias5; private readonly string _alias6; private readonly string _alias7; - - internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7) - : base(builder) + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7) : base(builder) { _alias1 = alias1; _alias2 = alias2; @@ -12868,13 +12961,9 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) { - if (specification == null) - throw new ArgumentNullException("specification"); - + if (specification == null) throw new ArgumentNullException("specification"); TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); - if (spec == null) - throw new ArgumentException("Join specification cannot resolve to null.", "specification"); - + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); string alias = string.IsNullOrEmpty(spec.Alias) ? "t8" : spec.Alias; string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(alias))); Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); @@ -12882,8 +12971,7 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7))); if (selectors != null) foreach (var item in selectors) @@ -12892,22 +12980,19 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7))); return this; } public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7))); return this; } public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7))); if (selectors != null) foreach (var item in selectors) @@ -12916,8 +13001,7 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7))); if (selectors != null) foreach (var item in selectors) @@ -12935,9 +13019,7 @@ namespace DynamORM private readonly string _alias6; private readonly string _alias7; private readonly string _alias8; - - internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8) - : base(builder) + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8) : base(builder) { _alias1 = alias1; _alias2 = alias2; @@ -12950,13 +13032,9 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) { - if (specification == null) - throw new ArgumentNullException("specification"); - + if (specification == null) throw new ArgumentNullException("specification"); TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); - if (spec == null) - throw new ArgumentException("Join specification cannot resolve to null.", "specification"); - + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); string alias = string.IsNullOrEmpty(spec.Alias) ? "t9" : spec.Alias; string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(alias))); Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); @@ -12964,8 +13042,7 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8))); if (selectors != null) foreach (var item in selectors) @@ -12974,22 +13051,19 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8))); return this; } public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8))); return this; } public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8))); if (selectors != null) foreach (var item in selectors) @@ -12998,8 +13072,7 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8))); if (selectors != null) foreach (var item in selectors) @@ -13018,9 +13091,7 @@ namespace DynamORM private readonly string _alias7; private readonly string _alias8; private readonly string _alias9; - - internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8, string alias9) - : base(builder) + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8, string alias9) : base(builder) { _alias1 = alias1; _alias2 = alias2; @@ -13034,13 +13105,9 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) { - if (specification == null) - throw new ArgumentNullException("specification"); - + if (specification == null) throw new ArgumentNullException("specification"); TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); - if (spec == null) - throw new ArgumentException("Join specification cannot resolve to null.", "specification"); - + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); string alias = string.IsNullOrEmpty(spec.Alias) ? "t10" : spec.Alias; string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(alias))); Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); @@ -13048,8 +13115,7 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9))); if (selectors != null) foreach (var item in selectors) @@ -13058,22 +13124,19 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9))); return this; } public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9))); return this; } public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9))); if (selectors != null) foreach (var item in selectors) @@ -13082,8 +13145,7 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9))); if (selectors != null) foreach (var item in selectors) @@ -13103,9 +13165,7 @@ namespace DynamORM private readonly string _alias8; private readonly string _alias9; private readonly string _alias10; - - internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8, string alias9, string alias10) - : base(builder) + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8, string alias9, string alias10) : base(builder) { _alias1 = alias1; _alias2 = alias2; @@ -13118,10 +13178,19 @@ namespace DynamORM _alias9 = alias9; _alias10 = alias10; } + public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) + { + if (specification == null) throw new ArgumentNullException("specification"); + TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); + string alias = string.IsNullOrEmpty(spec.Alias) ? "t11" : spec.Alias; + string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(alias))); + Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); + return new DynamicTypedSelectScopeQueryBuilder(Builder, _alias1, _alias2, _alias3, _alias4, _alias5, _alias6, _alias7, _alias8, _alias9, _alias10, alias); + } public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10))); if (selectors != null) foreach (var item in selectors) @@ -13130,22 +13199,19 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10))); return this; } public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10))); return this; } public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10))); if (selectors != null) foreach (var item in selectors) @@ -13154,8 +13220,7 @@ namespace DynamORM } public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10))); if (selectors != null) foreach (var item in selectors) @@ -13163,6 +13228,488 @@ namespace DynamORM return this; } } + internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder + { + private readonly string _alias1; + private readonly string _alias2; + private readonly string _alias3; + private readonly string _alias4; + private readonly string _alias5; + private readonly string _alias6; + private readonly string _alias7; + private readonly string _alias8; + private readonly string _alias9; + private readonly string _alias10; + private readonly string _alias11; + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8, string alias9, string alias10, string alias11) : base(builder) + { + _alias1 = alias1; + _alias2 = alias2; + _alias3 = alias3; + _alias4 = alias4; + _alias5 = alias5; + _alias6 = alias6; + _alias7 = alias7; + _alias8 = alias8; + _alias9 = alias9; + _alias10 = alias10; + _alias11 = alias11; + } + public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) + { + if (specification == null) throw new ArgumentNullException("specification"); + TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); + string alias = string.IsNullOrEmpty(spec.Alias) ? "t12" : spec.Alias; + string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(alias))); + Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); + return new DynamicTypedSelectScopeQueryBuilder(Builder, _alias1, _alias2, _alias3, _alias4, _alias5, _alias6, _alias7, _alias8, _alias9, _alias10, _alias11, alias); + } + public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11))); + if (selectors != null) + foreach (var item in selectors) + AddSelect(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11))); + if (selectors != null) + foreach (var item in selectors) + AddGroupBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11))); + if (selectors != null) + foreach (var item in selectors) + AddOrderBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11))); + return this; + } + } + internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder + { + private readonly string _alias1; + private readonly string _alias2; + private readonly string _alias3; + private readonly string _alias4; + private readonly string _alias5; + private readonly string _alias6; + private readonly string _alias7; + private readonly string _alias8; + private readonly string _alias9; + private readonly string _alias10; + private readonly string _alias11; + private readonly string _alias12; + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8, string alias9, string alias10, string alias11, string alias12) : base(builder) + { + _alias1 = alias1; + _alias2 = alias2; + _alias3 = alias3; + _alias4 = alias4; + _alias5 = alias5; + _alias6 = alias6; + _alias7 = alias7; + _alias8 = alias8; + _alias9 = alias9; + _alias10 = alias10; + _alias11 = alias11; + _alias12 = alias12; + } + public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) + { + if (specification == null) throw new ArgumentNullException("specification"); + TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); + string alias = string.IsNullOrEmpty(spec.Alias) ? "t13" : spec.Alias; + string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(alias))); + Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); + return new DynamicTypedSelectScopeQueryBuilder(Builder, _alias1, _alias2, _alias3, _alias4, _alias5, _alias6, _alias7, _alias8, _alias9, _alias10, _alias11, _alias12, alias); + } + public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12))); + if (selectors != null) + foreach (var item in selectors) + AddSelect(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12))); + if (selectors != null) + foreach (var item in selectors) + AddGroupBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12))); + if (selectors != null) + foreach (var item in selectors) + AddOrderBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12))); + return this; + } + } + internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder + { + private readonly string _alias1; + private readonly string _alias2; + private readonly string _alias3; + private readonly string _alias4; + private readonly string _alias5; + private readonly string _alias6; + private readonly string _alias7; + private readonly string _alias8; + private readonly string _alias9; + private readonly string _alias10; + private readonly string _alias11; + private readonly string _alias12; + private readonly string _alias13; + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8, string alias9, string alias10, string alias11, string alias12, string alias13) : base(builder) + { + _alias1 = alias1; + _alias2 = alias2; + _alias3 = alias3; + _alias4 = alias4; + _alias5 = alias5; + _alias6 = alias6; + _alias7 = alias7; + _alias8 = alias8; + _alias9 = alias9; + _alias10 = alias10; + _alias11 = alias11; + _alias12 = alias12; + _alias13 = alias13; + } + public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) + { + if (specification == null) throw new ArgumentNullException("specification"); + TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); + string alias = string.IsNullOrEmpty(spec.Alias) ? "t14" : spec.Alias; + string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(alias))); + Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); + return new DynamicTypedSelectScopeQueryBuilder(Builder, _alias1, _alias2, _alias3, _alias4, _alias5, _alias6, _alias7, _alias8, _alias9, _alias10, _alias11, _alias12, _alias13, alias); + } + public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13))); + if (selectors != null) + foreach (var item in selectors) + AddSelect(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13))); + if (selectors != null) + foreach (var item in selectors) + AddGroupBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13))); + if (selectors != null) + foreach (var item in selectors) + AddOrderBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13))); + return this; + } + } + internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder + { + private readonly string _alias1; + private readonly string _alias2; + private readonly string _alias3; + private readonly string _alias4; + private readonly string _alias5; + private readonly string _alias6; + private readonly string _alias7; + private readonly string _alias8; + private readonly string _alias9; + private readonly string _alias10; + private readonly string _alias11; + private readonly string _alias12; + private readonly string _alias13; + private readonly string _alias14; + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8, string alias9, string alias10, string alias11, string alias12, string alias13, string alias14) : base(builder) + { + _alias1 = alias1; + _alias2 = alias2; + _alias3 = alias3; + _alias4 = alias4; + _alias5 = alias5; + _alias6 = alias6; + _alias7 = alias7; + _alias8 = alias8; + _alias9 = alias9; + _alias10 = alias10; + _alias11 = alias11; + _alias12 = alias12; + _alias13 = alias13; + _alias14 = alias14; + } + public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) + { + if (specification == null) throw new ArgumentNullException("specification"); + TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); + string alias = string.IsNullOrEmpty(spec.Alias) ? "t15" : spec.Alias; + string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(alias))); + Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); + return new DynamicTypedSelectScopeQueryBuilder(Builder, _alias1, _alias2, _alias3, _alias4, _alias5, _alias6, _alias7, _alias8, _alias9, _alias10, _alias11, _alias12, _alias13, _alias14, alias); + } + public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14))); + if (selectors != null) + foreach (var item in selectors) + AddSelect(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14))); + if (selectors != null) + foreach (var item in selectors) + AddGroupBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14))); + if (selectors != null) + foreach (var item in selectors) + AddOrderBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14))); + return this; + } + } + internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder + { + private readonly string _alias1; + private readonly string _alias2; + private readonly string _alias3; + private readonly string _alias4; + private readonly string _alias5; + private readonly string _alias6; + private readonly string _alias7; + private readonly string _alias8; + private readonly string _alias9; + private readonly string _alias10; + private readonly string _alias11; + private readonly string _alias12; + private readonly string _alias13; + private readonly string _alias14; + private readonly string _alias15; + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8, string alias9, string alias10, string alias11, string alias12, string alias13, string alias14, string alias15) : base(builder) + { + _alias1 = alias1; + _alias2 = alias2; + _alias3 = alias3; + _alias4 = alias4; + _alias5 = alias5; + _alias6 = alias6; + _alias7 = alias7; + _alias8 = alias8; + _alias9 = alias9; + _alias10 = alias10; + _alias11 = alias11; + _alias12 = alias12; + _alias13 = alias13; + _alias14 = alias14; + _alias15 = alias15; + } + public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) + { + if (specification == null) throw new ArgumentNullException("specification"); + TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); + string alias = string.IsNullOrEmpty(spec.Alias) ? "t16" : spec.Alias; + string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15), new TypedTableContext(alias))); + Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); + return new DynamicTypedSelectScopeQueryBuilder(Builder, _alias1, _alias2, _alias3, _alias4, _alias5, _alias6, _alias7, _alias8, _alias9, _alias10, _alias11, _alias12, _alias13, _alias14, _alias15, alias); + } + public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15))); + if (selectors != null) + foreach (var item in selectors) + AddSelect(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15))); + if (selectors != null) + foreach (var item in selectors) + AddGroupBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15))); + if (selectors != null) + foreach (var item in selectors) + AddOrderBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15))); + return this; + } + } + internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder + { + private readonly string _alias1; + private readonly string _alias2; + private readonly string _alias3; + private readonly string _alias4; + private readonly string _alias5; + private readonly string _alias6; + private readonly string _alias7; + private readonly string _alias8; + private readonly string _alias9; + private readonly string _alias10; + private readonly string _alias11; + private readonly string _alias12; + private readonly string _alias13; + private readonly string _alias14; + private readonly string _alias15; + private readonly string _alias16; + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8, string alias9, string alias10, string alias11, string alias12, string alias13, string alias14, string alias15, string alias16) : base(builder) + { + _alias1 = alias1; + _alias2 = alias2; + _alias3 = alias3; + _alias4 = alias4; + _alias5 = alias5; + _alias6 = alias6; + _alias7 = alias7; + _alias8 = alias8; + _alias9 = alias9; + _alias10 = alias10; + _alias11 = alias11; + _alias12 = alias12; + _alias13 = alias13; + _alias14 = alias14; + _alias15 = alias15; + _alias16 = alias16; + } + public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15), new TypedTableContext(_alias16))); + if (selectors != null) + foreach (var item in selectors) + AddSelect(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15), new TypedTableContext(_alias16))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15), new TypedTableContext(_alias16))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15), new TypedTableContext(_alias16))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15), new TypedTableContext(_alias16))); + if (selectors != null) + foreach (var item in selectors) + AddGroupBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15), new TypedTableContext(_alias16))); + return this; + } + public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15), new TypedTableContext(_alias16))); + if (selectors != null) + foreach (var item in selectors) + AddOrderBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15), new TypedTableContext(_alias16))); + return this; + } + } /// Typed wrapper over with property-to-column translation. /// Mapped entity type. internal class DynamicTypedUpdateQueryBuilder : DynamicUpdateQueryBuilder, IDynamicTypedUpdateQueryBuilder @@ -17447,6 +17994,16 @@ namespace DynamORM return new TypedSqlSubQueryExpression(configure(db.FromTyped(alias, noLock))); } + /// Create scalar typed subquery expression using the scoped typed builder API. + public static TypedSqlExpression SubQueryScope(DynamicDatabase db, Func, IDynamicSelectQueryBuilder> configure, string alias = null, bool noLock = false) + { + if (db == null) + throw new ArgumentNullException("db"); + if (configure == null) + throw new ArgumentNullException("configure"); + + return new TypedSqlSubQueryExpression(configure(db.FromTypedScope(alias, noLock))); + } /// Create EXISTS predicate. public static TypedSqlPredicate Exists(IDynamicSelectQueryBuilder query) { @@ -17462,6 +18019,16 @@ namespace DynamORM return new TypedSqlExistsPredicate(configure(db.FromTyped(alias, noLock))); } + /// Create EXISTS predicate from scoped typed subquery factory. + public static TypedSqlPredicate ExistsScope(DynamicDatabase db, Func, IDynamicSelectQueryBuilder> configure, string alias = null, bool noLock = false) + { + if (db == null) + throw new ArgumentNullException("db"); + if (configure == null) + throw new ArgumentNullException("configure"); + + return new TypedSqlExistsPredicate(configure(db.FromTypedScope(alias, noLock))); + } /// Create CASE expression builder. public static TypedSqlCaseBuilder Case() { diff --git a/DynamORM.Tests/TypedSql/TypedSqlScopeDslTests.cs b/DynamORM.Tests/TypedSql/TypedSqlScopeDslTests.cs index 95b21f5..b139eb8 100644 --- a/DynamORM.Tests/TypedSql/TypedSqlScopeDslTests.cs +++ b/DynamORM.Tests/TypedSql/TypedSqlScopeDslTests.cs @@ -146,5 +146,69 @@ namespace DynamORM.Tests.TypedSql "SELECT a.\"id_user\" AS \"root_id\", j.\"user_code\" AS \"last_code\" FROM \"sample_users\" AS a LEFT JOIN \"sample_users\" AS b ON (a.\"id_user\" = b.\"id_user\") LEFT JOIN \"sample_users\" AS c ON (b.\"id_user\" = c.\"id_user\") LEFT JOIN \"sample_users\" AS d ON (c.\"id_user\" = d.\"id_user\") LEFT JOIN \"sample_users\" AS e ON (d.\"id_user\" = e.\"id_user\") LEFT JOIN \"sample_users\" AS f ON (e.\"id_user\" = f.\"id_user\") LEFT JOIN \"sample_users\" AS g ON (f.\"id_user\" = g.\"id_user\") LEFT JOIN \"sample_users\" AS h ON (g.\"id_user\" = h.\"id_user\") LEFT JOIN \"sample_users\" AS i ON (h.\"id_user\" = i.\"id_user\") LEFT JOIN \"sample_users\" AS j ON (i.\"id_user\" = j.\"id_user\") WHERE (j.\"user_code\" IS NOT NULL) ORDER BY j.\"user_code\" ASC", NormalizeSql(cmd.CommandText())); } + + [Test] + public void TestScopeBuilderSupportsSixteenTypedTables() + { + var cmd = Database.FromTypedScope("a") + .Join(j => j.Left().As("b").OnSql((a, b) => a.Col(x => x.Id).Eq(b.Col(x => x.Id)))) + .Join(j => j.Left().As("c").OnSql((a, b, c) => b.Col(x => x.Id).Eq(c.Col(x => x.Id)))) + .Join(j => j.Left().As("d").OnSql((a, b, c, d) => c.Col(x => x.Id).Eq(d.Col(x => x.Id)))) + .Join(j => j.Left().As("e").OnSql((a, b, c, d, e) => d.Col(x => x.Id).Eq(e.Col(x => x.Id)))) + .Join(j => j.Left().As("f").OnSql((a, b, c, d, e, f) => e.Col(x => x.Id).Eq(f.Col(x => x.Id)))) + .Join(j => j.Left().As("g").OnSql((a, b, c, d, e, f, g) => f.Col(x => x.Id).Eq(g.Col(x => x.Id)))) + .Join(j => j.Left().As("h").OnSql((a, b, c, d, e, f, g, h) => g.Col(x => x.Id).Eq(h.Col(x => x.Id)))) + .Join(j => j.Left().As("i").OnSql((a, b, c, d, e, f, g, h, i) => h.Col(x => x.Id).Eq(i.Col(x => x.Id)))) + .Join(j => j.Left().As("j").OnSql((a, b, c, d, e, f, g, h, i, j) => i.Col(x => x.Id).Eq(j.Col(x => x.Id)))) + .Join(j => j.Left().As("k").OnSql((a, b, c, d, e, f, g, h, i, j, k) => j.Col(x => x.Id).Eq(k.Col(x => x.Id)))) + .Join(j => j.Left().As("l").OnSql((a, b, c, d, e, f, g, h, i, j, k, l) => k.Col(x => x.Id).Eq(l.Col(x => x.Id)))) + .Join(j => j.Left().As("m").OnSql((a, b, c, d, e, f, g, h, i, j, k, l, m) => l.Col(x => x.Id).Eq(m.Col(x => x.Id)))) + .Join(j => j.Left().As("n").OnSql((a, b, c, d, e, f, g, h, i, j, k, l, m, n) => m.Col(x => x.Id).Eq(n.Col(x => x.Id)))) + .Join(j => j.Left().As("o").OnSql((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) => n.Col(x => x.Id).Eq(o.Col(x => x.Id)))) + .Join(j => j.Left().As("p").OnSql((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) => o.Col(x => x.Id).Eq(p.Col(x => x.Id)))) + .SelectSql( + (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) => a.Col(x => x.Id).As("root_id"), + (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) => p.Col(x => x.Code).As("tail_code")) + .WhereSql((a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) => p.Col(x => x.Code).IsNotNull()); + + Assert.AreEqual( + "SELECT a.\"id_user\" AS \"root_id\", p.\"user_code\" AS \"tail_code\" FROM \"sample_users\" AS a LEFT JOIN \"sample_users\" AS b ON (a.\"id_user\" = b.\"id_user\") LEFT JOIN \"sample_users\" AS c ON (b.\"id_user\" = c.\"id_user\") LEFT JOIN \"sample_users\" AS d ON (c.\"id_user\" = d.\"id_user\") LEFT JOIN \"sample_users\" AS e ON (d.\"id_user\" = e.\"id_user\") LEFT JOIN \"sample_users\" AS f ON (e.\"id_user\" = f.\"id_user\") LEFT JOIN \"sample_users\" AS g ON (f.\"id_user\" = g.\"id_user\") LEFT JOIN \"sample_users\" AS h ON (g.\"id_user\" = h.\"id_user\") LEFT JOIN \"sample_users\" AS i ON (h.\"id_user\" = i.\"id_user\") LEFT JOIN \"sample_users\" AS j ON (i.\"id_user\" = j.\"id_user\") LEFT JOIN \"sample_users\" AS k ON (j.\"id_user\" = k.\"id_user\") LEFT JOIN \"sample_users\" AS l ON (k.\"id_user\" = l.\"id_user\") LEFT JOIN \"sample_users\" AS m ON (l.\"id_user\" = m.\"id_user\") LEFT JOIN \"sample_users\" AS n ON (m.\"id_user\" = n.\"id_user\") LEFT JOIN \"sample_users\" AS o ON (n.\"id_user\" = o.\"id_user\") LEFT JOIN \"sample_users\" AS p ON (o.\"id_user\" = p.\"id_user\") WHERE (p.\"user_code\" IS NOT NULL)", + NormalizeSql(cmd.CommandText())); + } + + [Test] + public void TestScopeSubQueryHelperSupportsScopedJoinChain() + { + var cmd = Database.FromTyped("u") + .SelectSql(u => Sql.SubQueryScope( + Database, + sq => sq + .Join(j => j.Left().As("c").OnSql((x, c) => x.Col(a => a.IdUser).Eq(c.Col(a => a.UserId)))) + .Join(j => j.Left().As("r").OnSql((x, c, r) => c.Col(a => a.UserId).Eq(r.Col(a => a.UserId)))) + .SelectSql((x, c, r) => r.Col(a => a.RoleName)), + "x").As("role_name")); + + Assert.AreEqual( + "SELECT (SELECT r.\"Role_Name\" FROM \"dbo\".\"Users\" AS x LEFT JOIN \"dbo\".\"UserClients\" AS c ON (x.\"Id_User\" = c.\"User_Id\") LEFT JOIN \"dbo\".\"UserRoles\" AS r ON (c.\"User_Id\" = r.\"User_Id\")) AS \"role_name\" FROM \"sample_users\" AS u", + NormalizeSql(cmd.CommandText())); + } + + [Test] + public void TestScopeExistsHelperSupportsScopedJoinChain() + { + var cmd = Database.FromTyped("u") + .WhereSql(u => Sql.ExistsScope( + Database, + sq => sq + .Join(j => j.Left().As("c").OnSql((x, c) => x.Col(a => a.IdUser).Eq(c.Col(a => a.UserId)))) + .Join(j => j.Left().As("r").OnSql((x, c, r) => c.Col(a => a.UserId).Eq(r.Col(a => a.UserId)))) + .SelectSql((x, c, r) => r.Col(a => a.RoleId)), + "x")) + .SelectSql(u => u.Col(x => x.Id)); + + Assert.AreEqual( + "SELECT u.\"id_user\" FROM \"sample_users\" AS u WHERE (EXISTS (SELECT r.\"Role_Id\" FROM \"dbo\".\"Users\" AS x LEFT JOIN \"dbo\".\"UserClients\" AS c ON (x.\"Id_User\" = c.\"User_Id\") LEFT JOIN \"dbo\".\"UserRoles\" AS r ON (c.\"User_Id\" = r.\"User_Id\")))", + NormalizeSql(cmd.CommandText())); + } } } diff --git a/DynamORM/Builders/IDynamicTypedSelectScopeQueryBuilder.cs b/DynamORM/Builders/IDynamicTypedSelectScopeQueryBuilder.cs index 78e6e9c..d27fab9 100644 --- a/DynamORM/Builders/IDynamicTypedSelectScopeQueryBuilder.cs +++ b/DynamORM/Builders/IDynamicTypedSelectScopeQueryBuilder.cs @@ -101,6 +101,7 @@ namespace DynamORM.Builders public interface IDynamicTypedSelectScopeQueryBuilder : IDynamicSelectQueryBuilder { + IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification); IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors); IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); @@ -108,4 +109,63 @@ namespace DynamORM.Builders IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors); } + public interface IDynamicTypedSelectScopeQueryBuilder : IDynamicSelectQueryBuilder + { + IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification); + IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors); + IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors); + IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors); + } + + public interface IDynamicTypedSelectScopeQueryBuilder : IDynamicSelectQueryBuilder + { + IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification); + IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors); + IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors); + IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors); + } + + public interface IDynamicTypedSelectScopeQueryBuilder : IDynamicSelectQueryBuilder + { + IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification); + IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors); + IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors); + IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors); + } + + public interface IDynamicTypedSelectScopeQueryBuilder : IDynamicSelectQueryBuilder + { + IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification); + IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors); + IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors); + IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors); + } + + public interface IDynamicTypedSelectScopeQueryBuilder : IDynamicSelectQueryBuilder + { + IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification); + IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors); + IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors); + IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors); + } + + public interface IDynamicTypedSelectScopeQueryBuilder : IDynamicSelectQueryBuilder + { + IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors); + IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate); + IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors); + IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors); + } + } \ No newline at end of file diff --git a/DynamORM/Builders/Implementation/DynamicTypedSelectScopeQueryBuilder.cs b/DynamORM/Builders/Implementation/DynamicTypedSelectScopeQueryBuilder.cs index 3e4e532..cf8f8ae 100644 --- a/DynamORM/Builders/Implementation/DynamicTypedSelectScopeQueryBuilder.cs +++ b/DynamORM/Builders/Implementation/DynamicTypedSelectScopeQueryBuilder.cs @@ -15,12 +15,7 @@ namespace DynamORM.Builders.Implementation internal abstract class DynamicTypedSelectScopeQueryBuilderBase : IDynamicSelectQueryBuilder { protected readonly DynamicTypedSelectQueryBuilder Builder; - - protected DynamicTypedSelectScopeQueryBuilderBase(DynamicTypedSelectQueryBuilder builder) - { - Builder = builder; - } - + protected DynamicTypedSelectScopeQueryBuilderBase(DynamicTypedSelectQueryBuilder builder) { Builder = builder; } public DynamicDatabase Database { get { return Builder.Database; } } public IList Tables { get { return Builder.Tables; } } public IDictionary Parameters { get { return Builder.Parameters; } } @@ -29,7 +24,6 @@ namespace DynamORM.Builders.Implementation public List> OnCreateTemporaryParameter { get { return Builder.OnCreateTemporaryParameter; } set { Builder.OnCreateTemporaryParameter = value; } } public List> OnCreateParameter { get { return Builder.OnCreateParameter; } set { Builder.OnCreateParameter = value; } } public bool IsDisposed { get { return Builder.IsDisposed; } } - public void Dispose() { Builder.Dispose(); } public IDbCommand FillCommand(IDbCommand command) { return Builder.FillCommand(command); } public string CommandText() { return Builder.CommandText(); } @@ -65,13 +59,10 @@ namespace DynamORM.Builders.Implementation public IDynamicSelectQueryBuilder Limit(int? limit) { Builder.Limit(limit); return this; } public IDynamicSelectQueryBuilder Offset(int? offset) { Builder.Offset(offset); return this; } public IDynamicSelectQueryBuilder Distinct(bool distinct = true) { Builder.Distinct(distinct); return this; } - protected TypedJoinBuilder ApplyJoinSpec(TypedJoinBuilder builder, string alias, string customJoinType, DynamicJoinType joinType, bool noLock, string condition) { - if (!string.IsNullOrEmpty(alias)) - builder.As(alias); - if (!string.IsNullOrEmpty(customJoinType)) - builder.Type(customJoinType); + if (!string.IsNullOrEmpty(alias)) builder.As(alias); + if (!string.IsNullOrEmpty(customJoinType)) builder.Type(customJoinType); else { switch (joinType) @@ -86,13 +77,10 @@ namespace DynamORM.Builders.Implementation default: builder.Inner(); break; } } - if (noLock) - builder.NoLock(); - if (!string.IsNullOrEmpty(condition)) - builder.OnRaw(condition); + if (noLock) builder.NoLock(); + if (!string.IsNullOrEmpty(condition)) builder.OnRaw(condition); return builder; } - protected void AddSelect(TypedSqlSelectable item) { Builder.AddSelectSqlSelector(item); } protected void AddGroupBy(TypedSqlExpression item) { Builder.AddGroupBySqlSelector(item); } protected void AddOrderBy(TypedSqlOrderExpression item) { Builder.AddOrderBySqlSelector(item); } @@ -103,22 +91,16 @@ namespace DynamORM.Builders.Implementation internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder { private readonly string _alias1; - - internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1) - : base(builder) + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1) : base(builder) { _alias1 = alias1; } public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) { - if (specification == null) - throw new ArgumentNullException("specification"); - + if (specification == null) throw new ArgumentNullException("specification"); TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); - if (spec == null) - throw new ArgumentException("Join specification cannot resolve to null.", "specification"); - + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); string alias = string.IsNullOrEmpty(spec.Alias) ? "t2" : spec.Alias; string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(alias))); Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); @@ -127,8 +109,7 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedSqlSelectable> selector, params Func, TypedSqlSelectable>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddSelect(selector(new TypedTableContext(_alias1))); if (selectors != null) foreach (var item in selectors) @@ -138,24 +119,21 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddWhere(predicate(new TypedTableContext(_alias1))); return this; } public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddHaving(predicate(new TypedTableContext(_alias1))); return this; } public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedSqlExpression> selector, params Func, TypedSqlExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddGroupBy(selector(new TypedTableContext(_alias1))); if (selectors != null) foreach (var item in selectors) @@ -165,23 +143,21 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedSqlOrderExpression> selector, params Func, TypedSqlOrderExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddOrderBy(selector(new TypedTableContext(_alias1))); if (selectors != null) foreach (var item in selectors) AddOrderBy(item(new TypedTableContext(_alias1))); return this; } + } internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder { private readonly string _alias1; private readonly string _alias2; - - internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2) - : base(builder) + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2) : base(builder) { _alias1 = alias1; _alias2 = alias2; @@ -189,13 +165,9 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) { - if (specification == null) - throw new ArgumentNullException("specification"); - + if (specification == null) throw new ArgumentNullException("specification"); TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); - if (spec == null) - throw new ArgumentException("Join specification cannot resolve to null.", "specification"); - + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); string alias = string.IsNullOrEmpty(spec.Alias) ? "t3" : spec.Alias; string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(alias))); Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); @@ -204,8 +176,7 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedSqlSelectable>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2))); if (selectors != null) foreach (var item in selectors) @@ -215,24 +186,21 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2))); return this; } public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2))); return this; } public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedSqlExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2))); if (selectors != null) foreach (var item in selectors) @@ -242,14 +210,14 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedSqlOrderExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2))); if (selectors != null) foreach (var item in selectors) AddOrderBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2))); return this; } + } internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder @@ -257,9 +225,7 @@ namespace DynamORM.Builders.Implementation private readonly string _alias1; private readonly string _alias2; private readonly string _alias3; - - internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3) - : base(builder) + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3) : base(builder) { _alias1 = alias1; _alias2 = alias2; @@ -268,13 +234,9 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) { - if (specification == null) - throw new ArgumentNullException("specification"); - + if (specification == null) throw new ArgumentNullException("specification"); TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); - if (spec == null) - throw new ArgumentException("Join specification cannot resolve to null.", "specification"); - + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); string alias = string.IsNullOrEmpty(spec.Alias) ? "t4" : spec.Alias; string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(alias))); Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); @@ -283,8 +245,7 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3))); if (selectors != null) foreach (var item in selectors) @@ -294,24 +255,21 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3))); return this; } public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3))); return this; } public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3))); if (selectors != null) foreach (var item in selectors) @@ -321,14 +279,14 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3))); if (selectors != null) foreach (var item in selectors) AddOrderBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3))); return this; } + } internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder @@ -337,9 +295,7 @@ namespace DynamORM.Builders.Implementation private readonly string _alias2; private readonly string _alias3; private readonly string _alias4; - - internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4) - : base(builder) + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4) : base(builder) { _alias1 = alias1; _alias2 = alias2; @@ -349,13 +305,9 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) { - if (specification == null) - throw new ArgumentNullException("specification"); - + if (specification == null) throw new ArgumentNullException("specification"); TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); - if (spec == null) - throw new ArgumentException("Join specification cannot resolve to null.", "specification"); - + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); string alias = string.IsNullOrEmpty(spec.Alias) ? "t5" : spec.Alias; string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(alias))); Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); @@ -364,8 +316,7 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4))); if (selectors != null) foreach (var item in selectors) @@ -375,24 +326,21 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4))); return this; } public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4))); return this; } public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4))); if (selectors != null) foreach (var item in selectors) @@ -402,14 +350,14 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4))); if (selectors != null) foreach (var item in selectors) AddOrderBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4))); return this; } + } internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder @@ -419,9 +367,7 @@ namespace DynamORM.Builders.Implementation private readonly string _alias3; private readonly string _alias4; private readonly string _alias5; - - internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5) - : base(builder) + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5) : base(builder) { _alias1 = alias1; _alias2 = alias2; @@ -432,13 +378,9 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) { - if (specification == null) - throw new ArgumentNullException("specification"); - + if (specification == null) throw new ArgumentNullException("specification"); TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); - if (spec == null) - throw new ArgumentException("Join specification cannot resolve to null.", "specification"); - + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); string alias = string.IsNullOrEmpty(spec.Alias) ? "t6" : spec.Alias; string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(alias))); Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); @@ -447,8 +389,7 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5))); if (selectors != null) foreach (var item in selectors) @@ -458,24 +399,21 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5))); return this; } public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5))); return this; } public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5))); if (selectors != null) foreach (var item in selectors) @@ -485,14 +423,14 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5))); if (selectors != null) foreach (var item in selectors) AddOrderBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5))); return this; } + } internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder @@ -503,9 +441,7 @@ namespace DynamORM.Builders.Implementation private readonly string _alias4; private readonly string _alias5; private readonly string _alias6; - - internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6) - : base(builder) + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6) : base(builder) { _alias1 = alias1; _alias2 = alias2; @@ -517,13 +453,9 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) { - if (specification == null) - throw new ArgumentNullException("specification"); - + if (specification == null) throw new ArgumentNullException("specification"); TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); - if (spec == null) - throw new ArgumentException("Join specification cannot resolve to null.", "specification"); - + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); string alias = string.IsNullOrEmpty(spec.Alias) ? "t7" : spec.Alias; string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(alias))); Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); @@ -532,8 +464,7 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6))); if (selectors != null) foreach (var item in selectors) @@ -543,24 +474,21 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6))); return this; } public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6))); return this; } public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6))); if (selectors != null) foreach (var item in selectors) @@ -570,14 +498,14 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6))); if (selectors != null) foreach (var item in selectors) AddOrderBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6))); return this; } + } internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder @@ -589,9 +517,7 @@ namespace DynamORM.Builders.Implementation private readonly string _alias5; private readonly string _alias6; private readonly string _alias7; - - internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7) - : base(builder) + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7) : base(builder) { _alias1 = alias1; _alias2 = alias2; @@ -604,13 +530,9 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) { - if (specification == null) - throw new ArgumentNullException("specification"); - + if (specification == null) throw new ArgumentNullException("specification"); TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); - if (spec == null) - throw new ArgumentException("Join specification cannot resolve to null.", "specification"); - + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); string alias = string.IsNullOrEmpty(spec.Alias) ? "t8" : spec.Alias; string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(alias))); Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); @@ -619,8 +541,7 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7))); if (selectors != null) foreach (var item in selectors) @@ -630,24 +551,21 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7))); return this; } public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7))); return this; } public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7))); if (selectors != null) foreach (var item in selectors) @@ -657,14 +575,14 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7))); if (selectors != null) foreach (var item in selectors) AddOrderBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7))); return this; } + } internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder @@ -677,9 +595,7 @@ namespace DynamORM.Builders.Implementation private readonly string _alias6; private readonly string _alias7; private readonly string _alias8; - - internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8) - : base(builder) + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8) : base(builder) { _alias1 = alias1; _alias2 = alias2; @@ -693,13 +609,9 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) { - if (specification == null) - throw new ArgumentNullException("specification"); - + if (specification == null) throw new ArgumentNullException("specification"); TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); - if (spec == null) - throw new ArgumentException("Join specification cannot resolve to null.", "specification"); - + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); string alias = string.IsNullOrEmpty(spec.Alias) ? "t9" : spec.Alias; string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(alias))); Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); @@ -708,8 +620,7 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8))); if (selectors != null) foreach (var item in selectors) @@ -719,24 +630,21 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8))); return this; } public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8))); return this; } public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8))); if (selectors != null) foreach (var item in selectors) @@ -746,14 +654,14 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8))); if (selectors != null) foreach (var item in selectors) AddOrderBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8))); return this; } + } internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder @@ -767,9 +675,7 @@ namespace DynamORM.Builders.Implementation private readonly string _alias7; private readonly string _alias8; private readonly string _alias9; - - internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8, string alias9) - : base(builder) + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8, string alias9) : base(builder) { _alias1 = alias1; _alias2 = alias2; @@ -784,13 +690,9 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) { - if (specification == null) - throw new ArgumentNullException("specification"); - + if (specification == null) throw new ArgumentNullException("specification"); TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); - if (spec == null) - throw new ArgumentException("Join specification cannot resolve to null.", "specification"); - + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); string alias = string.IsNullOrEmpty(spec.Alias) ? "t10" : spec.Alias; string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(alias))); Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); @@ -799,8 +701,7 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9))); if (selectors != null) foreach (var item in selectors) @@ -810,24 +711,21 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9))); return this; } public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9))); return this; } public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9))); if (selectors != null) foreach (var item in selectors) @@ -837,14 +735,14 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9))); if (selectors != null) foreach (var item in selectors) AddOrderBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9))); return this; } + } internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder @@ -859,9 +757,7 @@ namespace DynamORM.Builders.Implementation private readonly string _alias8; private readonly string _alias9; private readonly string _alias10; - - internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8, string alias9, string alias10) - : base(builder) + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8, string alias9, string alias10) : base(builder) { _alias1 = alias1; _alias2 = alias2; @@ -875,10 +771,20 @@ namespace DynamORM.Builders.Implementation _alias10 = alias10; } + public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) + { + if (specification == null) throw new ArgumentNullException("specification"); + TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); + string alias = string.IsNullOrEmpty(spec.Alias) ? "t11" : spec.Alias; + string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(alias))); + Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); + return new DynamicTypedSelectScopeQueryBuilder(Builder, _alias1, _alias2, _alias3, _alias4, _alias5, _alias6, _alias7, _alias8, _alias9, _alias10, alias); + } + public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10))); if (selectors != null) foreach (var item in selectors) @@ -888,24 +794,21 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10))); return this; } public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) { - if (predicate == null) - throw new ArgumentNullException("predicate"); + if (predicate == null) throw new ArgumentNullException("predicate"); AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10))); return this; } public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10))); if (selectors != null) foreach (var item in selectors) @@ -915,14 +818,543 @@ namespace DynamORM.Builders.Implementation public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) { - if (selector == null) - throw new ArgumentNullException("selector"); + if (selector == null) throw new ArgumentNullException("selector"); AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10))); if (selectors != null) foreach (var item in selectors) AddOrderBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10))); return this; } + + } + + internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder + { + private readonly string _alias1; + private readonly string _alias2; + private readonly string _alias3; + private readonly string _alias4; + private readonly string _alias5; + private readonly string _alias6; + private readonly string _alias7; + private readonly string _alias8; + private readonly string _alias9; + private readonly string _alias10; + private readonly string _alias11; + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8, string alias9, string alias10, string alias11) : base(builder) + { + _alias1 = alias1; + _alias2 = alias2; + _alias3 = alias3; + _alias4 = alias4; + _alias5 = alias5; + _alias6 = alias6; + _alias7 = alias7; + _alias8 = alias8; + _alias9 = alias9; + _alias10 = alias10; + _alias11 = alias11; + } + + public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) + { + if (specification == null) throw new ArgumentNullException("specification"); + TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); + string alias = string.IsNullOrEmpty(spec.Alias) ? "t12" : spec.Alias; + string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(alias))); + Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); + return new DynamicTypedSelectScopeQueryBuilder(Builder, _alias1, _alias2, _alias3, _alias4, _alias5, _alias6, _alias7, _alias8, _alias9, _alias10, _alias11, alias); + } + + public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11))); + if (selectors != null) + foreach (var item in selectors) + AddSelect(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11))); + if (selectors != null) + foreach (var item in selectors) + AddGroupBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11))); + if (selectors != null) + foreach (var item in selectors) + AddOrderBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11))); + return this; + } + + } + + internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder + { + private readonly string _alias1; + private readonly string _alias2; + private readonly string _alias3; + private readonly string _alias4; + private readonly string _alias5; + private readonly string _alias6; + private readonly string _alias7; + private readonly string _alias8; + private readonly string _alias9; + private readonly string _alias10; + private readonly string _alias11; + private readonly string _alias12; + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8, string alias9, string alias10, string alias11, string alias12) : base(builder) + { + _alias1 = alias1; + _alias2 = alias2; + _alias3 = alias3; + _alias4 = alias4; + _alias5 = alias5; + _alias6 = alias6; + _alias7 = alias7; + _alias8 = alias8; + _alias9 = alias9; + _alias10 = alias10; + _alias11 = alias11; + _alias12 = alias12; + } + + public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) + { + if (specification == null) throw new ArgumentNullException("specification"); + TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); + string alias = string.IsNullOrEmpty(spec.Alias) ? "t13" : spec.Alias; + string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(alias))); + Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); + return new DynamicTypedSelectScopeQueryBuilder(Builder, _alias1, _alias2, _alias3, _alias4, _alias5, _alias6, _alias7, _alias8, _alias9, _alias10, _alias11, _alias12, alias); + } + + public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12))); + if (selectors != null) + foreach (var item in selectors) + AddSelect(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12))); + if (selectors != null) + foreach (var item in selectors) + AddGroupBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12))); + if (selectors != null) + foreach (var item in selectors) + AddOrderBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12))); + return this; + } + + } + + internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder + { + private readonly string _alias1; + private readonly string _alias2; + private readonly string _alias3; + private readonly string _alias4; + private readonly string _alias5; + private readonly string _alias6; + private readonly string _alias7; + private readonly string _alias8; + private readonly string _alias9; + private readonly string _alias10; + private readonly string _alias11; + private readonly string _alias12; + private readonly string _alias13; + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8, string alias9, string alias10, string alias11, string alias12, string alias13) : base(builder) + { + _alias1 = alias1; + _alias2 = alias2; + _alias3 = alias3; + _alias4 = alias4; + _alias5 = alias5; + _alias6 = alias6; + _alias7 = alias7; + _alias8 = alias8; + _alias9 = alias9; + _alias10 = alias10; + _alias11 = alias11; + _alias12 = alias12; + _alias13 = alias13; + } + + public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) + { + if (specification == null) throw new ArgumentNullException("specification"); + TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); + string alias = string.IsNullOrEmpty(spec.Alias) ? "t14" : spec.Alias; + string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(alias))); + Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); + return new DynamicTypedSelectScopeQueryBuilder(Builder, _alias1, _alias2, _alias3, _alias4, _alias5, _alias6, _alias7, _alias8, _alias9, _alias10, _alias11, _alias12, _alias13, alias); + } + + public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13))); + if (selectors != null) + foreach (var item in selectors) + AddSelect(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13))); + if (selectors != null) + foreach (var item in selectors) + AddGroupBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13))); + if (selectors != null) + foreach (var item in selectors) + AddOrderBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13))); + return this; + } + + } + + internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder + { + private readonly string _alias1; + private readonly string _alias2; + private readonly string _alias3; + private readonly string _alias4; + private readonly string _alias5; + private readonly string _alias6; + private readonly string _alias7; + private readonly string _alias8; + private readonly string _alias9; + private readonly string _alias10; + private readonly string _alias11; + private readonly string _alias12; + private readonly string _alias13; + private readonly string _alias14; + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8, string alias9, string alias10, string alias11, string alias12, string alias13, string alias14) : base(builder) + { + _alias1 = alias1; + _alias2 = alias2; + _alias3 = alias3; + _alias4 = alias4; + _alias5 = alias5; + _alias6 = alias6; + _alias7 = alias7; + _alias8 = alias8; + _alias9 = alias9; + _alias10 = alias10; + _alias11 = alias11; + _alias12 = alias12; + _alias13 = alias13; + _alias14 = alias14; + } + + public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) + { + if (specification == null) throw new ArgumentNullException("specification"); + TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); + string alias = string.IsNullOrEmpty(spec.Alias) ? "t15" : spec.Alias; + string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(alias))); + Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); + return new DynamicTypedSelectScopeQueryBuilder(Builder, _alias1, _alias2, _alias3, _alias4, _alias5, _alias6, _alias7, _alias8, _alias9, _alias10, _alias11, _alias12, _alias13, _alias14, alias); + } + + public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14))); + if (selectors != null) + foreach (var item in selectors) + AddSelect(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14))); + if (selectors != null) + foreach (var item in selectors) + AddGroupBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14))); + if (selectors != null) + foreach (var item in selectors) + AddOrderBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14))); + return this; + } + + } + + internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder + { + private readonly string _alias1; + private readonly string _alias2; + private readonly string _alias3; + private readonly string _alias4; + private readonly string _alias5; + private readonly string _alias6; + private readonly string _alias7; + private readonly string _alias8; + private readonly string _alias9; + private readonly string _alias10; + private readonly string _alias11; + private readonly string _alias12; + private readonly string _alias13; + private readonly string _alias14; + private readonly string _alias15; + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8, string alias9, string alias10, string alias11, string alias12, string alias13, string alias14, string alias15) : base(builder) + { + _alias1 = alias1; + _alias2 = alias2; + _alias3 = alias3; + _alias4 = alias4; + _alias5 = alias5; + _alias6 = alias6; + _alias7 = alias7; + _alias8 = alias8; + _alias9 = alias9; + _alias10 = alias10; + _alias11 = alias11; + _alias12 = alias12; + _alias13 = alias13; + _alias14 = alias14; + _alias15 = alias15; + } + + public IDynamicTypedSelectScopeQueryBuilder Join(Func, TypedScopeJoinBuilder> specification) + { + if (specification == null) throw new ArgumentNullException("specification"); + TypedScopeJoinBuilder spec = specification(new TypedScopeJoinBuilder()); + if (spec == null) throw new ArgumentException("Join specification cannot resolve to null.", "specification"); + string alias = string.IsNullOrEmpty(spec.Alias) ? "t16" : spec.Alias; + string condition = spec.OnSqlPredicate == null ? spec.OnRawCondition : Builder.RenderScopeSqlPredicate(spec.OnSqlPredicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15), new TypedTableContext(alias))); + Builder.Join(j => ApplyJoinSpec(j, alias, spec.CustomJoinType, spec.JoinType, spec.UseNoLock, condition)); + return new DynamicTypedSelectScopeQueryBuilder(Builder, _alias1, _alias2, _alias3, _alias4, _alias5, _alias6, _alias7, _alias8, _alias9, _alias10, _alias11, _alias12, _alias13, _alias14, _alias15, alias); + } + + public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15))); + if (selectors != null) + foreach (var item in selectors) + AddSelect(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15))); + if (selectors != null) + foreach (var item in selectors) + AddGroupBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15))); + if (selectors != null) + foreach (var item in selectors) + AddOrderBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15))); + return this; + } + + } + + internal sealed class DynamicTypedSelectScopeQueryBuilder : DynamicTypedSelectScopeQueryBuilderBase, IDynamicTypedSelectScopeQueryBuilder + { + private readonly string _alias1; + private readonly string _alias2; + private readonly string _alias3; + private readonly string _alias4; + private readonly string _alias5; + private readonly string _alias6; + private readonly string _alias7; + private readonly string _alias8; + private readonly string _alias9; + private readonly string _alias10; + private readonly string _alias11; + private readonly string _alias12; + private readonly string _alias13; + private readonly string _alias14; + private readonly string _alias15; + private readonly string _alias16; + internal DynamicTypedSelectScopeQueryBuilder(DynamicTypedSelectQueryBuilder builder, string alias1, string alias2, string alias3, string alias4, string alias5, string alias6, string alias7, string alias8, string alias9, string alias10, string alias11, string alias12, string alias13, string alias14, string alias15, string alias16) : base(builder) + { + _alias1 = alias1; + _alias2 = alias2; + _alias3 = alias3; + _alias4 = alias4; + _alias5 = alias5; + _alias6 = alias6; + _alias7 = alias7; + _alias8 = alias8; + _alias9 = alias9; + _alias10 = alias10; + _alias11 = alias11; + _alias12 = alias12; + _alias13 = alias13; + _alias14 = alias14; + _alias15 = alias15; + _alias16 = alias16; + } + + public IDynamicTypedSelectScopeQueryBuilder SelectSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlSelectable>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddSelect(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15), new TypedTableContext(_alias16))); + if (selectors != null) + foreach (var item in selectors) + AddSelect(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15), new TypedTableContext(_alias16))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder WhereSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddWhere(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15), new TypedTableContext(_alias16))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder HavingSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) throw new ArgumentNullException("predicate"); + AddHaving(predicate(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15), new TypedTableContext(_alias16))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder GroupBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddGroupBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15), new TypedTableContext(_alias16))); + if (selectors != null) + foreach (var item in selectors) + AddGroupBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15), new TypedTableContext(_alias16))); + return this; + } + + public IDynamicTypedSelectScopeQueryBuilder OrderBySql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression> selector, params Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlOrderExpression>[] selectors) + { + if (selector == null) throw new ArgumentNullException("selector"); + AddOrderBy(selector(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15), new TypedTableContext(_alias16))); + if (selectors != null) + foreach (var item in selectors) + AddOrderBy(item(new TypedTableContext(_alias1), new TypedTableContext(_alias2), new TypedTableContext(_alias3), new TypedTableContext(_alias4), new TypedTableContext(_alias5), new TypedTableContext(_alias6), new TypedTableContext(_alias7), new TypedTableContext(_alias8), new TypedTableContext(_alias9), new TypedTableContext(_alias10), new TypedTableContext(_alias11), new TypedTableContext(_alias12), new TypedTableContext(_alias13), new TypedTableContext(_alias14), new TypedTableContext(_alias15), new TypedTableContext(_alias16))); + return this; + } + } } \ No newline at end of file diff --git a/DynamORM/Builders/TypedScopeJoinBuilder.cs b/DynamORM/Builders/TypedScopeJoinBuilder.cs index 7f00084..2d1df52 100644 --- a/DynamORM/Builders/TypedScopeJoinBuilder.cs +++ b/DynamORM/Builders/TypedScopeJoinBuilder.cs @@ -22,12 +22,7 @@ namespace DynamORM.Builders JoinType = DynamicJoinType.Join; } - public TSelf As(string alias) - { - Alias = alias; - return (TSelf)this; - } - + public TSelf As(string alias) { Alias = alias; return (TSelf)this; } public TSelf Inner() { JoinType = DynamicJoinType.Inner; CustomJoinType = null; return (TSelf)this; } public TSelf Join() { JoinType = DynamicJoinType.Join; CustomJoinType = null; return (TSelf)this; } public TSelf Left() { JoinType = DynamicJoinType.Left; CustomJoinType = null; return (TSelf)this; } @@ -36,20 +31,8 @@ namespace DynamORM.Builders public TSelf LeftOuter() { JoinType = DynamicJoinType.LeftOuter; CustomJoinType = null; return (TSelf)this; } public TSelf RightOuter() { JoinType = DynamicJoinType.RightOuter; CustomJoinType = null; return (TSelf)this; } public TSelf FullOuter() { JoinType = DynamicJoinType.FullOuter; CustomJoinType = null; return (TSelf)this; } - - public TSelf Type(string joinType) - { - if (string.IsNullOrEmpty(joinType)) - throw new ArgumentNullException("joinType"); - CustomJoinType = joinType.Trim(); - return (TSelf)this; - } - - public TSelf NoLock(bool use = true) - { - UseNoLock = use; - return (TSelf)this; - } + public TSelf Type(string joinType) { if (string.IsNullOrEmpty(joinType)) throw new ArgumentNullException("joinType"); CustomJoinType = joinType.Trim(); return (TSelf)this; } + public TSelf NoLock(bool use = true) { UseNoLock = use; return (TSelf)this; } } public sealed class TypedScopeJoinBuilder : TypedScopeJoinBuilderBase> @@ -268,4 +251,148 @@ namespace DynamORM.Builders } } + public sealed class TypedScopeJoinBuilder : TypedScopeJoinBuilderBase> + { + internal Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> OnSqlPredicate { get; private set; } + internal string OnRawCondition { get; private set; } + + public TypedScopeJoinBuilder OnSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) + throw new ArgumentNullException("predicate"); + OnSqlPredicate = predicate; + OnRawCondition = null; + return this; + } + + public TypedScopeJoinBuilder OnRaw(string condition) + { + if (string.IsNullOrEmpty(condition)) + throw new ArgumentNullException("condition"); + OnRawCondition = condition.Trim(); + OnSqlPredicate = null; + return this; + } + } + + public sealed class TypedScopeJoinBuilder : TypedScopeJoinBuilderBase> + { + internal Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> OnSqlPredicate { get; private set; } + internal string OnRawCondition { get; private set; } + + public TypedScopeJoinBuilder OnSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) + throw new ArgumentNullException("predicate"); + OnSqlPredicate = predicate; + OnRawCondition = null; + return this; + } + + public TypedScopeJoinBuilder OnRaw(string condition) + { + if (string.IsNullOrEmpty(condition)) + throw new ArgumentNullException("condition"); + OnRawCondition = condition.Trim(); + OnSqlPredicate = null; + return this; + } + } + + public sealed class TypedScopeJoinBuilder : TypedScopeJoinBuilderBase> + { + internal Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> OnSqlPredicate { get; private set; } + internal string OnRawCondition { get; private set; } + + public TypedScopeJoinBuilder OnSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) + throw new ArgumentNullException("predicate"); + OnSqlPredicate = predicate; + OnRawCondition = null; + return this; + } + + public TypedScopeJoinBuilder OnRaw(string condition) + { + if (string.IsNullOrEmpty(condition)) + throw new ArgumentNullException("condition"); + OnRawCondition = condition.Trim(); + OnSqlPredicate = null; + return this; + } + } + + public sealed class TypedScopeJoinBuilder : TypedScopeJoinBuilderBase> + { + internal Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> OnSqlPredicate { get; private set; } + internal string OnRawCondition { get; private set; } + + public TypedScopeJoinBuilder OnSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) + throw new ArgumentNullException("predicate"); + OnSqlPredicate = predicate; + OnRawCondition = null; + return this; + } + + public TypedScopeJoinBuilder OnRaw(string condition) + { + if (string.IsNullOrEmpty(condition)) + throw new ArgumentNullException("condition"); + OnRawCondition = condition.Trim(); + OnSqlPredicate = null; + return this; + } + } + + public sealed class TypedScopeJoinBuilder : TypedScopeJoinBuilderBase> + { + internal Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> OnSqlPredicate { get; private set; } + internal string OnRawCondition { get; private set; } + + public TypedScopeJoinBuilder OnSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) + throw new ArgumentNullException("predicate"); + OnSqlPredicate = predicate; + OnRawCondition = null; + return this; + } + + public TypedScopeJoinBuilder OnRaw(string condition) + { + if (string.IsNullOrEmpty(condition)) + throw new ArgumentNullException("condition"); + OnRawCondition = condition.Trim(); + OnSqlPredicate = null; + return this; + } + } + + public sealed class TypedScopeJoinBuilder : TypedScopeJoinBuilderBase> + { + internal Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> OnSqlPredicate { get; private set; } + internal string OnRawCondition { get; private set; } + + public TypedScopeJoinBuilder OnSql(Func, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedTableContext, TypedSqlPredicate> predicate) + { + if (predicate == null) + throw new ArgumentNullException("predicate"); + OnSqlPredicate = predicate; + OnRawCondition = null; + return this; + } + + public TypedScopeJoinBuilder OnRaw(string condition) + { + if (string.IsNullOrEmpty(condition)) + throw new ArgumentNullException("condition"); + OnRawCondition = condition.Trim(); + OnSqlPredicate = null; + return this; + } + } + } \ No newline at end of file diff --git a/DynamORM/TypedSql/Sql.cs b/DynamORM/TypedSql/Sql.cs index eea24df..06a2132 100644 --- a/DynamORM/TypedSql/Sql.cs +++ b/DynamORM/TypedSql/Sql.cs @@ -150,6 +150,17 @@ namespace DynamORM.TypedSql return new TypedSqlSubQueryExpression(configure(db.FromTyped(alias, noLock))); } + /// Create scalar typed subquery expression using the scoped typed builder API. + public static TypedSqlExpression SubQueryScope(DynamicDatabase db, Func, IDynamicSelectQueryBuilder> configure, string alias = null, bool noLock = false) + { + if (db == null) + throw new ArgumentNullException("db"); + if (configure == null) + throw new ArgumentNullException("configure"); + + return new TypedSqlSubQueryExpression(configure(db.FromTypedScope(alias, noLock))); + } + /// Create EXISTS predicate. public static TypedSqlPredicate Exists(IDynamicSelectQueryBuilder query) { @@ -167,6 +178,17 @@ namespace DynamORM.TypedSql return new TypedSqlExistsPredicate(configure(db.FromTyped(alias, noLock))); } + /// Create EXISTS predicate from scoped typed subquery factory. + public static TypedSqlPredicate ExistsScope(DynamicDatabase db, Func, IDynamicSelectQueryBuilder> configure, string alias = null, bool noLock = false) + { + if (db == null) + throw new ArgumentNullException("db"); + if (configure == null) + throw new ArgumentNullException("configure"); + + return new TypedSqlExistsPredicate(configure(db.FromTypedScope(alias, noLock))); + } + /// Create CASE expression builder. public static TypedSqlCaseBuilder Case() {