Esempio n. 1
0
        /// <summary>
        /// Executes the rowmapper and get multiple output parameter results.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="commandText">Store procedure name. E.g. "Posts_GetPostsByUser</param>
        /// <param name="commandType">StoredProcedure</param>
        /// <param name="rowMapper">The mapper that maps a record to an object.</param>
        /// <param name="dbParameters">Array of parameters for the query</param>
        /// <param name="outputParamNames">Array of output parameter names.</param>
        /// <returns></returns>
        public static Tuple2 <IList <T>, IDictionary <string, object> > Query <T>(this IDBHelper dbHelper, string commandText, CommandType commandType, DbParameter[] dbParameters,
                                                                                  IRowMapper <IDataReader, T> rowMapper, string[] outputParamNames)
        {
            DbCommand command = dbHelper.BuildCommand(commandText, CommandType.StoredProcedure, dbParameters);

            IList <T> items = null;
            IDictionary <string, object> paramResults = new Dictionary <string, object>();

            using (command.Connection)
            {
                command.Connection.Open();
                IDataReader reader = command.ExecuteReader();

                // Map the workshops.
                items = rowMapper.MapRows(reader);

                // NOTE: Must close reader to get output params.
                reader.Close();

                // Now get all the output parameters.
                if (outputParamNames != null && outputParamNames.Length > 0)
                {
                    foreach (string outputParamName in outputParamNames)
                    {
                        object paramResult = command.Parameters[outputParamName].Value;
                        paramResults[outputParamName] = paramResult;
                    }
                }
                command.Dispose();
            }
            return(new Tuple2 <IList <T>, IDictionary <string, object> >(items, paramResults));
        }
Esempio n. 2
0
        /// <summary>
        /// Executes the rowmappers
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="dbHelper">Database helper</param>
        /// <param name="commandText">Store procedure name. E.g. "Posts_GetPostsByUser</param>
        /// <param name="commandType">StoredProcedure</param>
        /// <param name="rowMapper">The mapper that maps a record to an object.</param>
        /// <param name="dbParameters">Array of parameters for the query.</param>
        /// <returns></returns>
        public static IList <T> Query <T>(IDBHelper dbHelper, string commandText, CommandType commandType, DbParameter[] dbParameters, IRowMapper <IDataReader, T> rowMapper)
        {
            DbCommand command = dbHelper.BuildCommand(commandText, commandType, dbParameters);

            IList <T> items = null;

            using (command.Connection)
            {
                command.Connection.Open();
                IDataReader reader = command.ExecuteReader();

                // Map the workshops.
                items = rowMapper.MapRows(reader);

                reader.Close();
                command.Dispose();
            }
            return(items);
        }