Пример #1
0
        /// <summary>
        /// This method executes a non-query against the database. The primary purpose of this method
        /// is to insert, update or delete data in the database.
        /// </summary>
        /// <param name="helper">The <see cref="DALCHelper"/> class that contains the database
        /// command information.</param>
        /// <param name="criteria">The <see cref="DataTransferObject"/> containing the data to be
        /// used for the insert or update and/or the criteria used to determine mathing records in
        /// the database to be updated.</param>
        /// <returns>A long integer representing the count of records affected</returns>
        protected int ExecuteNonQuery(DALCHelper helper, DataTransferObject criteria)
        {
            // Initialize objects
            Database         db = null;
            DbCommandWrapper cw = null;

            // If the passed in helper is null throw exception
            if (null == helper)
            {
                throw new MNNonFatalException("CommonDALC.ExecuteNonQuery was passed a null DALCHelper.");
            }

            // Make sure any necessary criteria has been set
            if (helper.CriteriaIsValid(criteria) == false)
            {
                throw new MNNonFatalException("CommonDALC.ExecuteNonQuery was passed invalid data and/or criteria.");
            }

            try
            {
                // Initialize the database and command wrapper
                if (helper.DbInstanceName() == null)
                {
                    db = DatabaseFactory.CreateDatabase();
                }
                else
                {
                    db = DatabaseFactory.CreateDatabase(helper.DbInstanceName());
                }

                cw = helper.InitializeCommand(db, criteria);
                DbCommand command = cw.Command;

                // Execute the command
                int recordsAffected = 0;
                if (_isInTransaction)
                {
                    recordsAffected = db.ExecuteNonQuery(command, _transaction.GetTransaction());
                }
                else
                {
                    recordsAffected = db.ExecuteNonQuery(command);
                }

                // set command for garbage collection
                command = null;

                // return the count
                return(recordsAffected);
            }
            catch (MNException e)
            {
                e.AddMessageTraceData("MNException caught in CommonDALC.ExecuteNonQuery");
                throw;
            }
            catch (Exception e)
            {
                MNException ex = new MNException(e.Message, e, criteria);
                ex.AddMessageTraceData("Exception caught in CommonDALC.ExecuteNonQuery");
                throw ex;
            }
            finally
            {
                // Set the database object for garbage collection
                if (db != null)
                {
                    db = null;
                }

                // Set the command wrapper object for garbage collection
                if (cw != null)
                {
                    cw = null;
                }
            }
        }
Пример #2
0
        /// <summary>
        /// This method executes a query against the database and returns the results as a
        /// <see cref="DataTransferObject"/>. The primary purpose of this method is to retrieve
        /// a single entity (record) from the database (master) that may have associated child
        /// records (details).
        /// </summary>
        /// <param name="helper">The <see cref="DALCHelper"/> class that contains the database
        /// command information.</param>
        /// <param name="criteria">The <see cref="DataTransferObject"/> containing the criteria
        /// to be used to determine mathing records in the database.</param>
        /// <returns>The <see cref="DataTransferObject"/> now populated with the record found
        /// in the database matching the specified criteria.</returns>
        protected DataTransferObject ExecuteQueryDto(DALCHelper helper, DataTransferObject criteria)
        {
            // Initialize objects
            IDataReader      reader = null;
            Database         db     = null;
            DbCommandWrapper cw     = null;

            // Initialize output parameters
            DataTransferObject dto = null;

            // If the passed in helper is null throw exception
            if (null == helper)
            {
                throw new MNNonFatalException("CommonDALC.ExecuteQueryDto was passed a null DALCHelper.");
            }

            // Make sure any necessary criteria has been set
            if (helper.CriteriaIsValid(criteria) == false)
            {
                throw new MNNonFatalException("CommonDALC.ExecuteQueryDto was passed invalid search criteria.");
            }

            try
            {
                // Initialize the database and command wrapper
                if (helper.DbInstanceName() == null)
                {
                    db = DatabaseFactory.CreateDatabase();
                }
                else
                {
                    db = DatabaseFactory.CreateDatabase(helper.DbInstanceName());
                }

                cw = helper.InitializeCommand(db, criteria);
                DbCommand command = cw.Command;

                // Execute a data reader
                if (_isInTransaction)
                {
                    reader = db.ExecuteReader(command, _transaction.GetTransaction());
                }
                else
                {
                    reader = db.ExecuteReader(command);
                }

                // set command for garbage collection
                command = null;

                // Convert the results into a data transfer object
                dto = helper.ConvertResultsDto(cw, reader);
            }
            catch (MNException e)
            {
                e.AddMessageTraceData("MNException caught in CommonDALC.ExecuteQueryDto");
                throw;
            }
            catch (Exception e)
            {
                MNException ex = new MNException(e.Message, e, criteria);
                ex.AddMessageTraceData("Exception caught in CommonDALC.ExecuteQueryDto");
                throw ex;
            }
            finally
            {
                // Close the data reader if it has not already been closed
                if ((null != reader) && (reader.IsClosed == false))
                {
                    reader.Close();
                }

                // Set the database object for garbage collection
                if (db != null)
                {
                    db = null;
                }

                // Set the command wrapper object for garbage collection
                if (cw != null)
                {
                    cw = null;
                }
            }

            // Return the data transfer object
            return(dto);
        }
Пример #3
0
        /// <summary>
        /// This method executes a query against the database and returns the results
        /// as a DataSet. The primary purpose of this method is to retrieve a set of matching
        /// records from the database that require data processing from the calling procedure.
        /// The difference between ExecuteQueryDs and LoadDataSet is that this method allows
        /// an existing DataSet to be passed in as an input parameter such that additional
        /// results may be added to it versus a new DataSet being created.
        /// </summary>
        /// <param name="helper">The <see cref="DALCHelper"/> class that contains the database
        /// command information.</param>
        /// <param name="ds">An existing DataSet to which  more information shall be added.</param>
        /// <param name="criteria">The <see cref="DataTransferObject"/> containing the criteria
        /// to be used to determine mathing records in the database.</param>
        /// <returns>The DataSet filled with the matching records found in the database matching
        /// the specified criteria.</returns>
        protected void LoadDataSet(DALCHelper helper, DataSet ds, DataTransferObject criteria)
        {
            // Initialize objects
            Database         db = null;
            DbCommandWrapper cw = null;

            string[] tableNames = null;

            // If the passed in helper is null throw exception
            if (null == helper)
            {
                throw new MNNonFatalException("CommonDALC.LoadDataSet was passed a null DALCHelper.");
            }

            // Make sure any necessary criteria has been set
            if (helper.CriteriaIsValid(criteria) == false)
            {
                throw new MNNonFatalException("CommonDALC.LoadDataSet was passed invalid search criteria.");
            }

            // make sure the InitializeDSTableNames method is not returning
            // null.
            tableNames = helper.InitializeDsTableNames();
            if (tableNames == null)
            {
                throw new MNNonFatalException("CommonDALC.LoadDataSet has no table names specified.");
            }

            try
            {
                // Initialize the database and command wrapper
                if (helper.DbInstanceName() == null)
                {
                    db = DatabaseFactory.CreateDatabase();
                }
                else
                {
                    db = DatabaseFactory.CreateDatabase(helper.DbInstanceName());
                }

                cw = helper.InitializeCommand(db, criteria);
                DbCommand command = cw.Command;

                // Load the dataset
                if (_isInTransaction)
                {
                    db.LoadDataSet(command, ds, tableNames, _transaction.GetTransaction());
                }
                else
                {
                    db.LoadDataSet(command, ds, tableNames);
                }

                // set command for garbage collection
                command = null;
            }
            catch (MNException e)
            {
                e.AddMessageTraceData("MNException caught in CommonDALC.LoadDataSet");
                throw;
            }
            catch (Exception e)
            {
                MNException ex = new MNException(e.Message, e, criteria);
                ex.AddMessageTraceData("Exception caught in CommonDALC.LoadDataSet");
                throw ex;
            }
            finally
            {
                // Set the database object for garbage collection
                if (db != null)
                {
                    db = null;
                }

                // Set the command wrapper object for garbage collection
                if (cw != null)
                {
                    cw = null;
                }
            }
        }