src/Shared/EntityFramework/Core/Mapping/Update/Internal/Propagator.cs
// <summary>
// Propagates changes across a join expression node by implementing progation rules w.r.t. inputs
// from the left- and right- hand sides of the join. The work is actually performed
// by the <see cref="JoinPropagator" />.
// </summary>
// <param name="node"> A join expression node. </param>
// <returns> Results propagated to the given join expression node. </returns>
Propagates changes across a join expression node by implementing progation rules w.r.t. inputs
from the left- and right- hand sides of the join. The work is actually performed
by the .
Propagates changes across a join expression node by implementing progation rules w . r . t . inputs from the left - and right - hand sides of the join . The work is actually performed by the .
public override ChangeNode Visit(DbJoinExpression node)
        {
            Check.NotNull(node, "node");
            if (DbExpressionKind.InnerJoin != node.ExpressionKind
                && DbExpressionKind.LeftOuterJoin != node.ExpressionKind)
            {
                throw new NotSupportedException(Strings.Update_UnsupportedJoinType(node.ExpressionKind));
            }
            var leftExpr = node.Left.Expression;
            var rightExpr = node.Right.Expression;
            var left = Visit(leftExpr);
            var right = Visit(rightExpr);
            var evaluator = new JoinPropagator(left, right, node, this);
            var result = evaluator.Propagate();
            return result;
        }
public override ChangeNode Visit ( DbJoinExpression node ) { Check . NotNull ( node , " " ) ; if ( DbExpressionKind . InnerJoin != node . ExpressionKind && DbExpressionKind . LeftOuterJoin != node . ExpressionKind ) { throw new NotSupportedException ( Strings . Update_UnsupportedJoinType ( node . ExpressionKind ) ) ; } var leftExpr = node . Left . Expression ; var rightExpr = node . Right . Expression ; var left = Visit ( leftExpr ) ; var right = Visit ( rightExpr ) ; var evaluator = new JoinPropagator ( left , right , node , this ) ; var result = evaluator . Propagate ( ) ; return result ; }
Propagates changes across a join expression node by implementing progation rules w.r.t.
Propagates changes across a join expression node by implementing progation rules w . r . t .
// There are precisely two inputs to the join which we treat as the left and right children. // Get the results of propagating changes to the left and right inputs to the join. // Construct a new join propagator, passing in the left and right results, the actual // join expression, and this parent propagator. // Execute propagation.
Results propagated to the given join expression node.
Results propagated to the given join expression node .
node
DbJoinExpression
A join expression node.
A join expression node .