Table of Contents

Class JoinedEntityBuilder<T1, T2>

Namespace
NextORM.Core
Assembly
nextorm.core.dll

Join builder over a two-table projection, produced by a Join/LeftJoin/RightJoin/ FullJoin/CrossJoin call.

public class JoinedEntityBuilder<T1, T2> : EntityBuilder<Projection<T1, T2>>, ICloneable

Type Parameters

T1
T2
Inheritance
JoinedEntityBuilder<T1, T2>
Implements
Inherited Members
Extension Methods

Remarks

The P in the name denotes projection arity and is not self-explanatory. Recommended name: JoinedEntityBuilder<T1, T2>. See docs/specs/design/API-NAMING-REVIEW.md finding P0-4.

Constructors

JoinedEntityBuilder(IDataContext, JoinExpression)

Initializes a builder over the two-table projection seeded with join.

public JoinedEntityBuilder(IDataContext dataProvider, JoinExpression join)

Parameters

dataProvider IDataContext

The data context used to resolve tables and generate SQL.

join JoinExpression

The join expression that produced this projection.

Properties

JoinCondition

The join expression that produced this two-table projection.

public JoinExpression JoinCondition { get; set; }

Property Value

JoinExpression

Methods

Clone()

Creates an independent copy of this builder over the same projection.

public JoinedEntityBuilder<T1, T2> Clone()

Returns

JoinedEntityBuilder<T1, T2>

CloneImp()

Creates the copy returned by Clone() and the explicit ICloneable.Clone call. Overridden by derived builders to clone their extra state.

protected override object CloneImp()

Returns

object

A new builder with the same state.

CrossApply(string, Action<JoinOptions>?)

public JoinedEntityBuilder<T1, T2, TableAlias> CrossApply(string table, Action<JoinOptions>? options = null)

Parameters

table string
options Action<JoinOptions>

Returns

JoinedEntityBuilder<T1, T2, TableAlias>

Remarks

A null, empty, or whitespace-only table is rejected at the call site with ArgumentNullException / ArgumentException (ParamName == "table"), matching the explicit ctx.From(table) form.

CrossApply<T3>(Cte<T3>)

Adds a cross apply over the typed CTE cte.

public JoinedEntityBuilder<T1, T2, T3> CrossApply<T3>(Cte<T3> cte)

Parameters

cte Cte<T3>

The CTE descriptor, converted with this builder's context.

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with the CTE's type.

Type Parameters

T3

The CTE's projection type.

Exceptions

ArgumentNullException

A required reference argument is null.

CrossApply<T3>(Cte<T3>, Action<JoinOptions>?)

Adds a cross apply over the typed CTE cte with per-join options.

public JoinedEntityBuilder<T1, T2, T3> CrossApply<T3>(Cte<T3> cte, Action<JoinOptions>? options)

Parameters

cte Cte<T3>

The CTE descriptor, converted with this builder's context.

options Action<JoinOptions>

Per-join configuration.

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with the CTE's type.

Type Parameters

T3

The CTE's projection type.

Exceptions

ArgumentNullException

A required reference argument is null.

CrossApply<T3>(EntityBuilder<T3>, Action<JoinOptions>?)

Adds a CROSS APPLY over T3, evaluating the joined table once per left-hand row; rows with no match are dropped.

public JoinedEntityBuilder<T1, T2, T3> CrossApply<T3>(EntityBuilder<T3> _, Action<JoinOptions>? options = null)

Parameters

_ EntityBuilder<T3>

The builder identifying the table to join; only its table metadata is used, not its query state.

options Action<JoinOptions>

Optional per-join configuration; a cross join rejects every modifier at render time, while an APPLY folds a join hint into the statement-level hint comment on inline-hint dialects.

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with T3.

Type Parameters

T3

The entity type of the joined table.

CrossApply<T3>(Action<JoinOptions>?)

public JoinedEntityBuilder<T1, T2, T3> CrossApply<T3>(Action<JoinOptions>? options = null)

Parameters

options Action<JoinOptions>

Returns

JoinedEntityBuilder<T1, T2, T3>

Type Parameters

T3

CrossApply<T3>(Expression<Func<Projection<T1, T2>, EntityBuilder<T3>>>, Action<JoinOptions>?)

Applies a correlated CROSS APPLY source per left-hand row of this 2-source join, adding it as one more flat slot.

public JoinedEntityBuilder<T1, T2, T3> CrossApply<T3>(Expression<Func<Projection<T1, T2>, EntityBuilder<T3>>> source, Action<JoinOptions>? options = null)

Parameters

source Expression<Func<Projection<T1, T2>, EntityBuilder<T3>>>

Builds the applied source from the flattened left-hand row; it may reference every preceding slot.

options Action<JoinOptions>

Optional per-apply configuration (strictness, global, join/table hints, source lock).

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the flat 3-slot projection; no nested projection is produced.

Type Parameters

T3

The element type yielded by the applied source.

CrossApply<T3>(Expression<Func<Projection<T1, T2>, QueryCommand<T3>>>, Action<JoinOptions>?)

Applies a correlated CROSS APPLY derived query per left-hand row of this 2-source join, adding it as one more flat slot.

public JoinedEntityBuilder<T1, T2, T3> CrossApply<T3>(Expression<Func<Projection<T1, T2>, QueryCommand<T3>>> source, Action<JoinOptions>? options = null)

Parameters

source Expression<Func<Projection<T1, T2>, QueryCommand<T3>>>

Builds the applied source from the flattened left-hand row; it may reference every preceding slot.

options Action<JoinOptions>

Optional per-apply configuration (strictness, global, join/table hints, source lock).

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the flat 3-slot projection; no nested projection is produced.

Type Parameters

T3

The element type yielded by the applied source.

CrossJoin(string, Action<JoinOptions>?)

public JoinedEntityBuilder<T1, T2, TableAlias> CrossJoin(string table, Action<JoinOptions>? options = null)

Parameters

table string
options Action<JoinOptions>

Returns

JoinedEntityBuilder<T1, T2, TableAlias>

Remarks

A null, empty, or whitespace-only table is rejected at the call site with ArgumentNullException / ArgumentException (ParamName == "table"), matching the explicit ctx.From(table) form.

CrossJoin<T3>(Cte<T3>)

Adds a cross join over the typed CTE cte.

public JoinedEntityBuilder<T1, T2, T3> CrossJoin<T3>(Cte<T3> cte)

Parameters

cte Cte<T3>

The CTE descriptor, converted with this builder's context.

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with the CTE's type.

Type Parameters

T3

The CTE's projection type.

Exceptions

ArgumentNullException

A required reference argument is null.

CrossJoin<T3>(Cte<T3>, Action<JoinOptions>?)

Adds a cross join over the typed CTE cte with per-join options.

public JoinedEntityBuilder<T1, T2, T3> CrossJoin<T3>(Cte<T3> cte, Action<JoinOptions>? options)

Parameters

cte Cte<T3>

The CTE descriptor, converted with this builder's context.

options Action<JoinOptions>

Per-join configuration.

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with the CTE's type.

Type Parameters

T3

The CTE's projection type.

Exceptions

ArgumentNullException

A required reference argument is null.

CrossJoin<T3>(EntityBuilder<T3>, Action<JoinOptions>?)

Adds a CROSS JOIN over T3, producing the Cartesian product without a join condition.

public JoinedEntityBuilder<T1, T2, T3> CrossJoin<T3>(EntityBuilder<T3> _, Action<JoinOptions>? options = null)

Parameters

_ EntityBuilder<T3>

The builder identifying the table to join; only its table metadata is used, not its query state.

options Action<JoinOptions>

Optional per-join configuration; a cross join rejects every modifier at render time, while an APPLY folds a join hint into the statement-level hint comment on inline-hint dialects.

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with T3.

Type Parameters

T3

The entity type of the joined table.

CrossJoin<T3>(Action<JoinOptions>?)

public JoinedEntityBuilder<T1, T2, T3> CrossJoin<T3>(Action<JoinOptions>? options = null)

Parameters

options Action<JoinOptions>

Returns

JoinedEntityBuilder<T1, T2, T3>

Type Parameters

T3

FullJoin(string, Expression<Func<Projection<T1, T2>, TableAlias, bool>>, Action<JoinOptions>?)

public JoinedEntityBuilder<T1, T2, TableAlias> FullJoin(string table, Expression<Func<Projection<T1, T2>, TableAlias, bool>> joinCondition, Action<JoinOptions>? options = null)

Parameters

table string
joinCondition Expression<Func<Projection<T1, T2>, TableAlias, bool>>
options Action<JoinOptions>

Returns

JoinedEntityBuilder<T1, T2, TableAlias>

Remarks

A null, empty, or whitespace-only table is rejected at the call site with ArgumentNullException / ArgumentException (ParamName == "table"), matching the explicit ctx.From(table) form.

FullJoin<T3>(Cte<T3>, Expression<Func<Projection<T1, T2>, T3, bool>>)

Adds a full outer join over the typed CTE cte.

public JoinedEntityBuilder<T1, T2, T3> FullJoin<T3>(Cte<T3> cte, Expression<Func<Projection<T1, T2>, T3, bool>> joinCondition)

Parameters

cte Cte<T3>

The CTE descriptor, converted with this builder's context.

joinCondition Expression<Func<Projection<T1, T2>, T3, bool>>

A predicate relating the current projection to the joined entity.

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with the CTE's type.

Type Parameters

T3

The CTE's projection type.

Exceptions

ArgumentNullException

A required reference argument is null.

FullJoin<T3>(Cte<T3>, Expression<Func<Projection<T1, T2>, T3, bool>>, Action<JoinOptions>?)

Adds a full outer join over the typed CTE cte with per-join options.

public JoinedEntityBuilder<T1, T2, T3> FullJoin<T3>(Cte<T3> cte, Expression<Func<Projection<T1, T2>, T3, bool>> joinCondition, Action<JoinOptions>? options)

Parameters

cte Cte<T3>

The CTE descriptor, converted with this builder's context.

joinCondition Expression<Func<Projection<T1, T2>, T3, bool>>

A predicate relating the current projection to the joined entity.

options Action<JoinOptions>

Per-join configuration.

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with the CTE's type.

Type Parameters

T3

The CTE's projection type.

Exceptions

ArgumentNullException

A required reference argument is null.

FullJoin<T3>(EntityBuilder<T3>, Expression<Func<Projection<T1, T2>, T3, bool>>, Action<JoinOptions>?)

Adds a FULL JOIN over T3; rows from both sides are kept, with null on the missing side.

public JoinedEntityBuilder<T1, T2, T3> FullJoin<T3>(EntityBuilder<T3> _, Expression<Func<Projection<T1, T2>, T3, bool>> joinCondition, Action<JoinOptions>? options = null)

Parameters

_ EntityBuilder<T3>

The builder identifying the table to join; only its table metadata is used, not its query state.

joinCondition Expression<Func<Projection<T1, T2>, T3, bool>>

A predicate relating the current projection to the joined entity.

options Action<JoinOptions>

Optional per-join configuration, for example j => j.Global() or j => j.WithStrictness(JoinStrictness.Any).

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with T3.

Type Parameters

T3

The entity type of the joined table.

FullJoin<T3>(Expression<Func<Projection<T1, T2>, T3, bool>>, Action<JoinOptions>?)

Adds a FULL JOIN over T3 without an explicit source; T3 is resolved through this builder's context (From<T3>()) and forwarded to the source-explicit overload.

public JoinedEntityBuilder<T1, T2, T3> FullJoin<T3>(Expression<Func<Projection<T1, T2>, T3, bool>> joinCondition, Action<JoinOptions>? options = null)

Parameters

joinCondition Expression<Func<Projection<T1, T2>, T3, bool>>

A predicate relating the current projection to the joined entity.

options Action<JoinOptions>

Optional per-join configuration; forwarded unchanged to the source-explicit overload.

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with T3.

Type Parameters

T3

The entity type of the joined table.

Exceptions

ArgumentNullException

joinCondition is null.

Join(string, Expression<Func<Projection<T1, T2>, TableAlias, bool>>, Action<JoinOptions>?)

public JoinedEntityBuilder<T1, T2, TableAlias> Join(string table, Expression<Func<Projection<T1, T2>, TableAlias, bool>> joinCondition, Action<JoinOptions>? options = null)

Parameters

table string
joinCondition Expression<Func<Projection<T1, T2>, TableAlias, bool>>
options Action<JoinOptions>

Returns

JoinedEntityBuilder<T1, T2, TableAlias>

Remarks

A null, empty, or whitespace-only table is rejected at the call site with ArgumentNullException / ArgumentException (ParamName == "table"), matching the explicit ctx.From(table) form.

Join<T3>(Cte<T3>, Expression<Func<Projection<T1, T2>, T3, bool>>)

Adds a inner join over the typed CTE cte.

public JoinedEntityBuilder<T1, T2, T3> Join<T3>(Cte<T3> cte, Expression<Func<Projection<T1, T2>, T3, bool>> joinCondition)

Parameters

cte Cte<T3>

The CTE descriptor, converted with this builder's context.

joinCondition Expression<Func<Projection<T1, T2>, T3, bool>>

A predicate relating the current projection to the joined entity.

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with the CTE's type.

Type Parameters

T3

The CTE's projection type.

Exceptions

ArgumentNullException

A required reference argument is null.

Join<T3>(Cte<T3>, Expression<Func<Projection<T1, T2>, T3, bool>>, Action<JoinOptions>?)

Adds a inner join over the typed CTE cte with per-join options.

public JoinedEntityBuilder<T1, T2, T3> Join<T3>(Cte<T3> cte, Expression<Func<Projection<T1, T2>, T3, bool>> joinCondition, Action<JoinOptions>? options)

Parameters

cte Cte<T3>

The CTE descriptor, converted with this builder's context.

joinCondition Expression<Func<Projection<T1, T2>, T3, bool>>

A predicate relating the current projection to the joined entity.

options Action<JoinOptions>

Per-join configuration.

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with the CTE's type.

Type Parameters

T3

The CTE's projection type.

Exceptions

ArgumentNullException

A required reference argument is null.

Join<T3>(EntityBuilder<T3>, Expression<Func<Projection<T1, T2>, T3, bool>>, Action<JoinOptions>?)

Adds an INNER JOIN over T3; rows with no match on the right are excluded.

public JoinedEntityBuilder<T1, T2, T3> Join<T3>(EntityBuilder<T3> _, Expression<Func<Projection<T1, T2>, T3, bool>> joinCondition, Action<JoinOptions>? options = null)

Parameters

_ EntityBuilder<T3>

The builder identifying the table to join; only its table metadata is used, not its query state.

joinCondition Expression<Func<Projection<T1, T2>, T3, bool>>

A predicate relating the current projection to the joined entity.

options Action<JoinOptions>

Optional per-join configuration, for example j => j.Global() or j => j.WithStrictness(JoinStrictness.Any).

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with T3.

Type Parameters

T3

The entity type of the joined table.

Join<T3>(Expression<Func<Projection<T1, T2>, T3, bool>>, Action<JoinOptions>?)

Adds an INNER JOIN over T3 without an explicit source; T3 is resolved through this builder's context (From<T3>()) and forwarded to the source-explicit overload.

public JoinedEntityBuilder<T1, T2, T3> Join<T3>(Expression<Func<Projection<T1, T2>, T3, bool>> joinCondition, Action<JoinOptions>? options = null)

Parameters

joinCondition Expression<Func<Projection<T1, T2>, T3, bool>>

A predicate relating the current projection to the joined entity.

options Action<JoinOptions>

Optional per-join configuration; forwarded unchanged to the source-explicit overload.

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with T3.

Type Parameters

T3

The entity type of the joined table.

Exceptions

ArgumentNullException

joinCondition is null.

LeftJoin(string, Expression<Func<Projection<T1, T2>, TableAlias, bool>>, Action<JoinOptions>?)

public JoinedEntityBuilder<T1, T2, TableAlias> LeftJoin(string table, Expression<Func<Projection<T1, T2>, TableAlias, bool>> joinCondition, Action<JoinOptions>? options = null)

Parameters

table string
joinCondition Expression<Func<Projection<T1, T2>, TableAlias, bool>>
options Action<JoinOptions>

Returns

JoinedEntityBuilder<T1, T2, TableAlias>

Remarks

A null, empty, or whitespace-only table is rejected at the call site with ArgumentNullException / ArgumentException (ParamName == "table"), matching the explicit ctx.From(table) form.

LeftJoin<T3>(Cte<T3>, Expression<Func<Projection<T1, T2>, T3, bool>>)

Adds a left outer join over the typed CTE cte.

public JoinedEntityBuilder<T1, T2, T3> LeftJoin<T3>(Cte<T3> cte, Expression<Func<Projection<T1, T2>, T3, bool>> joinCondition)

Parameters

cte Cte<T3>

The CTE descriptor, converted with this builder's context.

joinCondition Expression<Func<Projection<T1, T2>, T3, bool>>

A predicate relating the current projection to the joined entity.

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with the CTE's type.

Type Parameters

T3

The CTE's projection type.

Exceptions

ArgumentNullException

A required reference argument is null.

LeftJoin<T3>(Cte<T3>, Expression<Func<Projection<T1, T2>, T3, bool>>, Action<JoinOptions>?)

Adds a left outer join over the typed CTE cte with per-join options.

public JoinedEntityBuilder<T1, T2, T3> LeftJoin<T3>(Cte<T3> cte, Expression<Func<Projection<T1, T2>, T3, bool>> joinCondition, Action<JoinOptions>? options)

Parameters

cte Cte<T3>

The CTE descriptor, converted with this builder's context.

joinCondition Expression<Func<Projection<T1, T2>, T3, bool>>

A predicate relating the current projection to the joined entity.

options Action<JoinOptions>

Per-join configuration.

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with the CTE's type.

Type Parameters

T3

The CTE's projection type.

Exceptions

ArgumentNullException

A required reference argument is null.

LeftJoin<T3>(EntityBuilder<T3>, Expression<Func<Projection<T1, T2>, T3, bool>>, Action<JoinOptions>?)

Adds a LEFT JOIN over T3; unmatched left-hand rows are kept with null values on the right.

public JoinedEntityBuilder<T1, T2, T3> LeftJoin<T3>(EntityBuilder<T3> _, Expression<Func<Projection<T1, T2>, T3, bool>> joinCondition, Action<JoinOptions>? options = null)

Parameters

_ EntityBuilder<T3>

The builder identifying the table to join; only its table metadata is used, not its query state.

joinCondition Expression<Func<Projection<T1, T2>, T3, bool>>

A predicate relating the current projection to the joined entity.

options Action<JoinOptions>

Optional per-join configuration, for example j => j.Global() or j => j.WithStrictness(JoinStrictness.Any).

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with T3.

Type Parameters

T3

The entity type of the joined table.

LeftJoin<T3>(Expression<Func<Projection<T1, T2>, T3, bool>>, Action<JoinOptions>?)

Adds a LEFT JOIN over T3 without an explicit source; T3 is resolved through this builder's context (From<T3>()) and forwarded to the source-explicit overload.

public JoinedEntityBuilder<T1, T2, T3> LeftJoin<T3>(Expression<Func<Projection<T1, T2>, T3, bool>> joinCondition, Action<JoinOptions>? options = null)

Parameters

joinCondition Expression<Func<Projection<T1, T2>, T3, bool>>

A predicate relating the current projection to the joined entity.

options Action<JoinOptions>

Optional per-join configuration; forwarded unchanged to the source-explicit overload.

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with T3.

Type Parameters

T3

The entity type of the joined table.

Exceptions

ArgumentNullException

joinCondition is null.

OuterApply(string, Action<JoinOptions>?)

public JoinedEntityBuilder<T1, T2, TableAlias> OuterApply(string table, Action<JoinOptions>? options = null)

Parameters

table string
options Action<JoinOptions>

Returns

JoinedEntityBuilder<T1, T2, TableAlias>

Remarks

A null, empty, or whitespace-only table is rejected at the call site with ArgumentNullException / ArgumentException (ParamName == "table"), matching the explicit ctx.From(table) form.

OuterApply<T3>(Cte<T3>)

Adds a outer apply over the typed CTE cte.

public JoinedEntityBuilder<T1, T2, T3> OuterApply<T3>(Cte<T3> cte)

Parameters

cte Cte<T3>

The CTE descriptor, converted with this builder's context.

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with the CTE's type.

Type Parameters

T3

The CTE's projection type.

Exceptions

ArgumentNullException

A required reference argument is null.

OuterApply<T3>(Cte<T3>, Action<JoinOptions>?)

Adds a outer apply over the typed CTE cte with per-join options.

public JoinedEntityBuilder<T1, T2, T3> OuterApply<T3>(Cte<T3> cte, Action<JoinOptions>? options)

Parameters

cte Cte<T3>

The CTE descriptor, converted with this builder's context.

options Action<JoinOptions>

Per-join configuration.

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with the CTE's type.

Type Parameters

T3

The CTE's projection type.

Exceptions

ArgumentNullException

A required reference argument is null.

OuterApply<T3>(EntityBuilder<T3>, Action<JoinOptions>?)

Adds an OUTER APPLY over T3, evaluating the joined table once per left-hand row; unmatched left rows are kept.

public JoinedEntityBuilder<T1, T2, T3> OuterApply<T3>(EntityBuilder<T3> _, Action<JoinOptions>? options = null)

Parameters

_ EntityBuilder<T3>

The builder identifying the table to join; only its table metadata is used, not its query state.

options Action<JoinOptions>

Optional per-join configuration; a cross join rejects every modifier at render time, while an APPLY folds a join hint into the statement-level hint comment on inline-hint dialects.

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with T3.

Type Parameters

T3

The entity type of the joined table.

OuterApply<T3>(Action<JoinOptions>?)

public JoinedEntityBuilder<T1, T2, T3> OuterApply<T3>(Action<JoinOptions>? options = null)

Parameters

options Action<JoinOptions>

Returns

JoinedEntityBuilder<T1, T2, T3>

Type Parameters

T3

OuterApply<T3>(Expression<Func<Projection<T1, T2>, EntityBuilder<T3>>>, Action<JoinOptions>?)

Applies a correlated OUTER APPLY source per left-hand row, keeping unmatched left rows of this 2-source join, adding it as one more flat slot.

public JoinedEntityBuilder<T1, T2, T3> OuterApply<T3>(Expression<Func<Projection<T1, T2>, EntityBuilder<T3>>> source, Action<JoinOptions>? options = null)

Parameters

source Expression<Func<Projection<T1, T2>, EntityBuilder<T3>>>

Builds the applied source from the flattened left-hand row; it may reference every preceding slot.

options Action<JoinOptions>

Optional per-apply configuration (strictness, global, join/table hints, source lock).

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the flat 3-slot projection; no nested projection is produced.

Type Parameters

T3

The element type yielded by the applied source.

OuterApply<T3>(Expression<Func<Projection<T1, T2>, QueryCommand<T3>>>, Action<JoinOptions>?)

Applies a correlated OUTER APPLY derived query per left-hand row of this 2-source join, adding it as one more flat slot.

public JoinedEntityBuilder<T1, T2, T3> OuterApply<T3>(Expression<Func<Projection<T1, T2>, QueryCommand<T3>>> source, Action<JoinOptions>? options = null)

Parameters

source Expression<Func<Projection<T1, T2>, QueryCommand<T3>>>

Builds the applied source from the flattened left-hand row; it may reference every preceding slot.

options Action<JoinOptions>

Optional per-apply configuration (strictness, global, join/table hints, source lock).

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the flat 3-slot projection; no nested projection is produced.

Type Parameters

T3

The element type yielded by the applied source.

RightJoin(string, Expression<Func<Projection<T1, T2>, TableAlias, bool>>, Action<JoinOptions>?)

public JoinedEntityBuilder<T1, T2, TableAlias> RightJoin(string table, Expression<Func<Projection<T1, T2>, TableAlias, bool>> joinCondition, Action<JoinOptions>? options = null)

Parameters

table string
joinCondition Expression<Func<Projection<T1, T2>, TableAlias, bool>>
options Action<JoinOptions>

Returns

JoinedEntityBuilder<T1, T2, TableAlias>

Remarks

A null, empty, or whitespace-only table is rejected at the call site with ArgumentNullException / ArgumentException (ParamName == "table"), matching the explicit ctx.From(table) form.

RightJoin<T3>(Cte<T3>, Expression<Func<Projection<T1, T2>, T3, bool>>)

Adds a right outer join over the typed CTE cte.

public JoinedEntityBuilder<T1, T2, T3> RightJoin<T3>(Cte<T3> cte, Expression<Func<Projection<T1, T2>, T3, bool>> joinCondition)

Parameters

cte Cte<T3>

The CTE descriptor, converted with this builder's context.

joinCondition Expression<Func<Projection<T1, T2>, T3, bool>>

A predicate relating the current projection to the joined entity.

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with the CTE's type.

Type Parameters

T3

The CTE's projection type.

Exceptions

ArgumentNullException

A required reference argument is null.

RightJoin<T3>(Cte<T3>, Expression<Func<Projection<T1, T2>, T3, bool>>, Action<JoinOptions>?)

Adds a right outer join over the typed CTE cte with per-join options.

public JoinedEntityBuilder<T1, T2, T3> RightJoin<T3>(Cte<T3> cte, Expression<Func<Projection<T1, T2>, T3, bool>> joinCondition, Action<JoinOptions>? options)

Parameters

cte Cte<T3>

The CTE descriptor, converted with this builder's context.

joinCondition Expression<Func<Projection<T1, T2>, T3, bool>>

A predicate relating the current projection to the joined entity.

options Action<JoinOptions>

Per-join configuration.

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with the CTE's type.

Type Parameters

T3

The CTE's projection type.

Exceptions

ArgumentNullException

A required reference argument is null.

RightJoin<T3>(EntityBuilder<T3>, Expression<Func<Projection<T1, T2>, T3, bool>>, Action<JoinOptions>?)

Adds a RIGHT JOIN over T3; unmatched right-hand rows are kept with null values on the left.

public JoinedEntityBuilder<T1, T2, T3> RightJoin<T3>(EntityBuilder<T3> _, Expression<Func<Projection<T1, T2>, T3, bool>> joinCondition, Action<JoinOptions>? options = null)

Parameters

_ EntityBuilder<T3>

The builder identifying the table to join; only its table metadata is used, not its query state.

joinCondition Expression<Func<Projection<T1, T2>, T3, bool>>

A predicate relating the current projection to the joined entity.

options Action<JoinOptions>

Optional per-join configuration, for example j => j.Global() or j => j.WithStrictness(JoinStrictness.Any).

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with T3.

Type Parameters

T3

The entity type of the joined table.

RightJoin<T3>(Expression<Func<Projection<T1, T2>, T3, bool>>, Action<JoinOptions>?)

Adds a RIGHT JOIN over T3 without an explicit source; T3 is resolved through this builder's context (From<T3>()) and forwarded to the source-explicit overload.

public JoinedEntityBuilder<T1, T2, T3> RightJoin<T3>(Expression<Func<Projection<T1, T2>, T3, bool>> joinCondition, Action<JoinOptions>? options = null)

Parameters

joinCondition Expression<Func<Projection<T1, T2>, T3, bool>>

A predicate relating the current projection to the joined entity.

options Action<JoinOptions>

Optional per-join configuration; forwarded unchanged to the source-explicit overload.

Returns

JoinedEntityBuilder<T1, T2, T3>

A builder over the projection extended with T3.

Type Parameters

T3

The entity type of the joined table.

Exceptions

ArgumentNullException

joinCondition is null.

Where(Expression<Func<Projection<T1, T2>, bool>>)

Adds a WHERE condition while keeping the joined builder type, so the chain can end in a multi-table Delete().

public JoinedEntityBuilder<T1, T2> Where(Expression<Func<Projection<T1, T2>, bool>> condition)

Parameters

condition Expression<Func<Projection<T1, T2>, bool>>

The predicate each row must satisfy.

Returns

JoinedEntityBuilder<T1, T2>

This builder, for chaining.