public void TransformExpressions () { var oldInnerSequence = ExpressionHelper.CreateExpression (); var oldOuterKeySelector = ExpressionHelper.CreateExpression (); var oldInnerKeySelector = ExpressionHelper.CreateExpression (); var newInnerSequence = ExpressionHelper.CreateExpression (); var newOuterKeySelector = ExpressionHelper.CreateExpression (); var newInnerKeySelector = ExpressionHelper.CreateExpression (); var clause = new JoinClause ("x", typeof (Cook), oldInnerSequence, oldOuterKeySelector, oldInnerKeySelector); clause.TransformExpressions (ex => { if (ex == oldInnerSequence) return newInnerSequence; else if (ex == oldOuterKeySelector) return newOuterKeySelector; else if (ex == oldInnerKeySelector) return newInnerKeySelector; else { Assert.Fail(); return null; } }); Assert.That (clause.InnerSequence, Is.SameAs (newInnerSequence)); Assert.That (clause.OuterKeySelector, Is.SameAs (newOuterKeySelector)); Assert.That (clause.InnerKeySelector, Is.SameAs (newInnerKeySelector)); }
/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> public override void VisitJoinClause(JoinClause joinClause, QueryModel queryModel, GroupJoinClause groupJoinClause) => joinClause.TransformExpressions(TransformingVisitor.Visit);