예제 #1
0
 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;
     }
 }
예제 #2
0
        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);
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
        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();
        }
예제 #5
0
        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)));
        }
예제 #6
0
        public static void ChangeStyleOfNonDefault(SqlParameterNaming naming)
        {
            var query = new SqlCommand("EXECUTE sp_insertData", naming);

            Assert.Throws <InvalidOperationException>(() => ChangeNamingOf(query, naming));
        }