public virtual IRelationalCommandBuilder AddParameter(IRelationalParameter parameter) { Check.NotNull(parameter, nameof(parameter)); _parameters.Add(parameter); return(this); }
public virtual void AddParameter(IRelationalParameter relationalParameter) { Check.NotNull(relationalParameter, nameof(relationalParameter)); if (relationalParameter.InvariantName == null || _parameters.All(p => p.InvariantName != relationalParameter.InvariantName)) { _parameters.Add(relationalParameter); } }
public static void CopyFrom(this DbParameter @this, IRelationalParameter from, object value, string newParameterName) { @this.ParameterName = newParameterName; if (from is TypeMappedRelationalParameter) { var relationalTypeMappingProperty = typeof(TypeMappedRelationalParameter).GetProperty("RelationalTypeMapping", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); if (relationalTypeMappingProperty != null) { var relationalTypeMapping = (RelationalTypeMapping)relationalTypeMappingProperty.GetValue(from); if (relationalTypeMapping.DbType.HasValue) { @this.DbType = relationalTypeMapping.DbType.Value; } } } @this.Value = value ?? DBNull.Value; }
public IRelationalCommandBuilder AddParameter(IRelationalParameter parameter) { _parameters.Add(parameter); return(this); }
public static void CopyFrom(this DbParameter @this, IRelationalParameter from, object value) { CopyFrom(@this, from, value, from.InvariantName); }
public static void CopyFrom(this DbParameter @this, IRelationalParameter from, object value, string newParameterName) { @this.ParameterName = newParameterName; @this.Value = value ?? DBNull.Value; }
public static void CopyFrom(this DbParameter @this, IRelationalParameter from, object value) { @this.ParameterName = from.InvariantName; @this.Value = value ?? DBNull.Value; }
public void AddParameter(IRelationalParameter relationalParameter) => _parameters.Add(relationalParameter);
public void AddParameter(IRelationalParameter relationalParameter) { throw new NotImplementedException(); }
protected virtual void GenerateFromSql( [NotNull] string sql, [NotNull] Expression arguments, [NotNull] IReadOnlyDictionary <string, object> parameters) { Check.NotEmpty(sql, nameof(sql)); Check.NotNull(arguments, nameof(arguments)); Check.NotNull(parameters, nameof(parameters)); string[] substitutions = null; // ReSharper disable once SwitchStatementMissingSomeCases switch (arguments.NodeType) { case ExpressionType.Parameter: { var parameterExpression = (ParameterExpression)arguments; object parameterValue; if (parameters.TryGetValue(parameterExpression.Name, out parameterValue)) { var argumentValues = (object[])parameterValue; var relationalParameters = new IRelationalParameter[argumentValues.Length]; substitutions = new string[argumentValues.Length]; _relationalCommandBuilder.AddCompositeParameter( parameterExpression.Name, builder => { for (var i = 0; i < argumentValues.Length; i++) { var parameterName = _parameterNameGenerator.GenerateNext(); substitutions[i] = SqlGenerator.GenerateParameterName(parameterName); builder.AddParameter( parameterName, substitutions[i]); } }); } break; } case ExpressionType.Constant: { var constantExpression = (ConstantExpression)arguments; var argumentValues = (object[])constantExpression.Value; substitutions = new string[argumentValues.Length]; for (var i = 0; i < argumentValues.Length; i++) { substitutions[i] = SqlGenerator.GenerateLiteral(argumentValues[i], _isUnicode); } break; } case ExpressionType.NewArrayInit: { var newArrayExpression = (NewArrayExpression)arguments; substitutions = new string[newArrayExpression.Expressions.Count]; for (var i = 0; i < newArrayExpression.Expressions.Count; i++) { var expression = newArrayExpression.Expressions[i].RemoveConvert(); // ReSharper disable once SwitchStatementMissingSomeCases switch (expression.NodeType) { case ExpressionType.Constant: { substitutions[i] = SqlGenerator .GenerateLiteral(((ConstantExpression)expression).Value, _isUnicode); break; } case ExpressionType.Parameter: { var parameter = (ParameterExpression)expression; if (_parametersValues.ContainsKey(parameter.Name)) { substitutions[i] = _sqlGenerationHelper.GenerateParameterName(parameter.Name); _relationalCommandBuilder.AddParameter( parameter.Name, substitutions[i]); } break; } } } break; } } if (substitutions != null) { // ReSharper disable once CoVariantArrayConversion sql = string.Format(sql, substitutions); } _relationalCommandBuilder.AppendLines(sql); }