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