private static void ChangeNamingOf(SqlCommand command, SqlParameterNaming newNaming) { try { typeof(SqlCommand).GetMethod("ChangeNaming", BindingFlags.Instance | BindingFlags.NonPublic) .Invoke(command, new object[] { newNaming }); } catch (TargetInvocationException ex) { throw ex.InnerException; } }
public static void ChangeStyle(SqlParameterNaming newNaming, string paramName1, string paramName2) { var query = new SqlCommand($"SELECT * FROM a WHERE a.col1 = {paramName1} AND a.col2 = {paramName2}"); query.Parameters.Add(new SqlParameter(paramName1, PrimitiveTypes.String(), new SqlString($"val of {paramName1}"))); query.Parameters.Add(new SqlParameter(paramName2, PrimitiveTypes.Boolean(), SqlBoolean.False)); Assert.Equal(SqlParameterNaming.Default, query.ParameterNaming); ChangeNamingOf(query, newNaming); Assert.Equal(newNaming, query.ParameterNaming); }
/// <summary> /// Constructs the command object with the given /// text and a given parameter naming convention. /// </summary> /// <param name="text">The text of the command to be executed</param> /// <param name="naming">The naming convention of the parameters in the command</param> /// <exception cref="ArgumentNullException">If the provided /// <paramref name="text"/> is <c>null</c> or empty.</exception> public SqlCommand(string text, SqlParameterNaming naming) { if (String.IsNullOrEmpty(text)) { throw new ArgumentNullException(nameof(text)); } Text = text; ParameterNaming = naming; Parameters = new ParameterCollection(this); }
internal void ChangeNaming(SqlParameterNaming naming) { if (ParameterNaming != SqlParameterNaming.Default) { throw new InvalidOperationException("Cannot change the parameter style if it was not set to default"); } if (naming == SqlParameterNaming.Default) { throw new ArgumentException("Cannot change the parameter style of a command to default"); } ParameterNaming = naming; ((ParameterCollection)Parameters).ValidateAll(); }
public static void AddInvalidStyledQueryParameter(SqlParameterNaming naming, string paramName) { var query = new SqlCommand($"INSERT INTO a (col1) VALUES ({paramName})", naming); Assert.Throws <ArgumentException>(() => query.Parameters.Add(new SqlParameter(paramName, PrimitiveTypes.Boolean(), SqlBoolean.True))); }
public static void ChangeStyleOfNonDefault(SqlParameterNaming naming) { var query = new SqlCommand("EXECUTE sp_insertData", naming); Assert.Throws <InvalidOperationException>(() => ChangeNamingOf(query, naming)); }