public override void ReplaceWith(SqlExpression expression) { ArgumentValidator.EnsureArgumentNotNull(expression, "expression"); ArgumentValidator.EnsureArgumentIs <SqlCase>(expression, "expression"); SqlCase replacingExpression = expression as SqlCase; value = replacingExpression.Value; @else = replacingExpression.Else; cases.Clear(); foreach (KeyValuePair <SqlExpression, SqlExpression> pair in replacingExpression) { cases.Add(pair); } }
internal override object Clone(SqlNodeCloneContext context) { if (context.NodeMapping.ContainsKey(this)) { return(context.NodeMapping[this]); } var clone = new SqlCase(value.IsNullReference() ? null : (SqlExpression)value.Clone(context)); if ([email protected]()) { clone.Else = (SqlExpression)@else.Clone(context); } foreach (KeyValuePair <SqlExpression, SqlExpression> pair in cases) { clone[(SqlExpression)pair.Key.Clone(context)] = (SqlExpression)pair.Value.Clone(context); } context.NodeMapping[this] = clone; return(clone); }