public override DbExpression Visit(DbNewInstanceExpression expression) { Check.NotNull(expression, "expression"); DbExpression result = expression; var newType = VisitTypeUsage(expression.ResultType); var newArguments = VisitExpressionList(expression.Arguments); var unchanged = (ReferenceEquals(expression.ResultType, newType) && ReferenceEquals(expression.Arguments, newArguments)); if (expression.HasRelatedEntityReferences) { var newRefs = VisitList(expression.RelatedEntityReferences, VisitRelatedEntityRef); if (!unchanged || !ReferenceEquals(expression.RelatedEntityReferences, newRefs)) { result = CqtBuilder.CreateNewEntityWithRelationshipsExpression((EntityType)newType.EdmType, newArguments, newRefs); } } else { if (!unchanged) { result = CqtBuilder.New(newType, newArguments.ToArray()); } } NotifyIfChanged(expression, result); return(result); }
/// <summary> /// Visitor pattern method for <see cref="T:System.Data.Entity.Core.Common.CommandTrees.DbNewInstanceExpression" />. /// </summary> /// <param name="expression"> The DbNewInstanceExpression that is being visited. </param> /// <exception cref="T:System.ArgumentNullException"> /// <paramref name="expression" /> /// is null /// </exception> public override void Visit(DbNewInstanceExpression expression) { Check.NotNull <DbNewInstanceExpression>(expression, nameof(expression)); this.VisitExpressionList(expression.Arguments); if (!expression.HasRelatedEntityReferences) { return; } this.VisitRelatedEntityReferenceList((IList <DbRelatedEntityRef>)expression.RelatedEntityReferences); }
/// <summary> /// Visitor pattern method for <see cref="DbNewInstanceExpression" />. /// </summary> /// <param name="expression"> The DbNewInstanceExpression that is being visited. </param> /// <exception cref="ArgumentNullException"> /// <paramref name="expression" /> /// is null /// </exception> public override void Visit(DbNewInstanceExpression expression) { Check.NotNull(expression, "expression"); VisitExpressionList(expression.Arguments); if (expression.HasRelatedEntityReferences) { Debug.Assert( expression.RelatedEntityReferences != null, "HasRelatedEntityReferences returned true for null RelatedEntityReferences list?"); VisitRelatedEntityReferenceList(expression.RelatedEntityReferences); } }
/// <summary> /// When overridden in a derived class, implements the visitor pattern for /// <see /// cref="T:System.Data.Entity.Core.Common.CommandTrees.DbNewInstanceExpression" /> /// . /// </summary> /// <returns>A result value of a specific type.</returns> /// <param name="expression"> /// The <see cref="T:System.Data.Entity.Core.Common.CommandTrees.DbNewInstanceExpression" /> that is being visited. /// </param> public abstract TResultType Visit(DbNewInstanceExpression expression);
/// <summary> /// When overridden in a derived class, implements the visitor pattern for /// <see cref="T:System.Data.Entity.Core.Common.CommandTrees.DbNewInstanceExpression" /> /// . /// </summary> /// <param name="expression"> /// The <see cref="T:System.Data.Entity.Core.Common.CommandTrees.DbNewInstanceExpression" /> that is visited. /// </param> public abstract void Visit(DbNewInstanceExpression expression);
public override void Visit(DbNewInstanceExpression expression) { }