//[Transactional(TransactionalTypes.TransactionScope)]
        protected void DataPortal_Delete(BudgetTypeCriteria criteria)
        {
            bool cancel = false;

            OnDeleting(criteria, ref cancel);
            if (cancel)
            {
                return;
            }

            using (var connection = new SqlConnection(ADOHelper.ConnectionString))
            {
                connection.Open();
                using (var command = new SqlCommand("[dbo].[spCFM_BudgetType_Delete]", connection))
                {
                    command.CommandType = CommandType.StoredProcedure;

                    command.Parameters.AddRange(ADOHelper.SqlParameters(criteria.StateBag));

                    //result: The number of rows changed, inserted, or deleted. -1 for select statements; 0 if no rows were affected, or the statement failed.
                    int result = command.ExecuteNonQuery();
                    if (result == 0)
                    {
                        throw new DBConcurrencyException("The entity is out of date on the client. Please update the entity and try again. This could also be thrown if the sql statement failed to execute.");
                    }
                }
            }

            OnDeleted();
        }
        private BudgetType DataPortal_Fetch(BudgetTypeCriteria criteria)
        {
            bool cancel = false;

            OnFetching(criteria, ref cancel);
            if (cancel)
            {
                return(null);
            }
            using (var connection = new SqlConnection(ADOHelper.ConnectionString))
            {
                connection.Open();
                using (var command = new SqlCommand("[dbo].[spCFM_BudgetType_Select]", connection))
                {
                    command.CommandType = CommandType.StoredProcedure;
                    command.Parameters.AddRange(ADOHelper.SqlParameters(criteria.StateBag));
                    command.Parameters.AddWithValue("@p_NameHasValue", criteria.NameHasValue);
                    using (var reader = command.ExecuteReader())
                    {
                        var rowParser = reader.GetRowParser <BudgetType>();
                        if (reader.Read())
                        {
                            return(GetBudgetType(rowParser, reader));
                        }
                        else
                        {
                            throw new Exception(String.Format("The record was not found in 'dbo.BudgetType' using the following criteria: {0}.", criteria));
                        }
                    }
                }
            }
            OnFetched();
        }
        public static void DeleteBudgetType(System.Int32 budgetTypeID)
        {
            var criteria = new BudgetTypeCriteria {
                BudgetTypeID = budgetTypeID
            };


            new BudgetType().DataPortal_Delete(criteria);
        }
        /// <summary>
        /// Returns a <see cref="BudgetType"/> object of the specified criteria.
        /// </summary>
        /// <param name="budgetTypeID">No additional detail available.</param>
        /// <returns>A <see cref="BudgetType"/> object of the specified criteria.</returns>
        public static BudgetType GetByBudgetTypeID(System.Int32 budgetTypeID)
        {
            var criteria = new BudgetTypeCriteria {
                BudgetTypeID = budgetTypeID
            };


            return(new BudgetType().DataPortal_Fetch(criteria));
        }
        /// <summary>
        /// CodeSmith generated stub method that is called after the child <see cref="BudgetType"/> object with the specified criteria has been deleted.
        /// </summary>
        //partial void OnDeleted();
        //partial void OnChildLoading(Csla.Core.IPropertyInfo childProperty, ref bool cancel);

        #endregion


        #region Exists Command

        /// <summary>
        /// Determines if a record exists in the BudgetType table in the database for the specified criteria.
        /// </summary>
        /// <param name="criteria">The criteria parameter is an <see cref="BudgetType"/> object.</param>
        /// <returns>A boolean value of true is returned if a record is found.</returns>
        public static BudgetType Exists(BudgetTypeCriteria criteria)
        {
            try
            {
                return(new BudgetType().DataPortal_Fetch(criteria));
            }
            catch (Exception ex)
            {
            }
            return(null);
        }
        private BudgetTypeList DataPortal_Fetch(BudgetTypeCriteria criteria)
        {
            bool cancel = false;

            OnFetching(criteria, ref cancel);
            if (cancel)
            {
                return(null);
            }

            //RaiseListChangedEvents = false;

            // Fetch Child objects.
            using (var connection = new SqlConnection(ADOHelper.ConnectionString))
            {
                connection.Open();
                using (var command = new SqlCommand("[dbo].[spCFM_BudgetType_Select]", connection))
                {
                    command.CommandType = CommandType.StoredProcedure;

                    command.Parameters.AddRange(ADOHelper.SqlParameters(criteria.StateBag));
                    command.Parameters.AddWithValue("@p_NameHasValue", criteria.NameHasValue);
                    using (var reader = command.ExecuteReader())
                    {
                        if (reader.Read())
                        {
                            var rowParser = reader.GetRowParser <CFMData.BudgetType>();
                            do
                            {
                                this.Add(CFMData.BudgetType.GetBudgetType(rowParser, reader));
                            }while(reader.Read());
                        }
                        OnFetched();
                        return(this);
                    }
                }
            }

            //RaiseListChangedEvents = true;
        }
        // [Transactional(TransactionalTypes.TransactionScope)]
        protected void DataPortal_Update()
        {
            bool cancel = false;

            OnUpdating(ref cancel);
            if (cancel)
            {
                return;
            }
            if (OriginalBudgetTypeID != BudgetTypeID)
            {
                // Insert new child.
                BudgetType item = new BudgetType {
                    BudgetTypeID = BudgetTypeID, Code = Code, Name = Name
                };

                item.DataPortal_Update();

                // Mark editable child lists as dirty. This code may need to be updated to one-to-one relationships.
                foreach (Budget itemToUpdate in Budgets)
                {
                    itemToUpdate.BudgetTypeID = BudgetTypeID;
                }

                // Create a new connection.
                using (var connection = new SqlConnection(ADOHelper.ConnectionString))
                {
                    connection.Open();
                    SqlTransaction trans = connection.BeginTransaction();
                    try
                    {
                        UpdateChildren(this, connection, trans);
                        trans.Commit();
                    }
                    catch (Exception ex)
                    {
                        trans.Rollback();
                        throw;
                    }

                    //FieldManager.UpdateChildren(this, connection);
                }
                // Delete the old.
                var criteria = new BudgetTypeCriteria {
                    BudgetTypeID = OriginalBudgetTypeID
                };

                DataPortal_Delete(criteria);

                // Mark the original as the new one.
                OriginalBudgetTypeID = BudgetTypeID;
                OnUpdated();

                return;
            }

            using (var connection = new SqlConnection(ADOHelper.ConnectionString))
            {
                connection.Open();
                SqlTransaction trans = connection.BeginTransaction();
                try
                {
                    using (var command = new SqlCommand("[dbo].[spCFM_BudgetType_Update]", connection, trans))
                    {
                        command.CommandType = CommandType.StoredProcedure;
                        command.Parameters.AddWithValue("@p_OriginalBudgetTypeID", this.OriginalBudgetTypeID);
                        command.Parameters.AddWithValue("@p_BudgetTypeID", this.BudgetTypeID);
                        command.Parameters.AddWithValue("@p_Code", this.Code);
                        command.Parameters.AddWithValue("@p_Name", ADOHelper.NullCheck(this.Name));
                        //result: The number of rows changed, inserted, or deleted. -1 for select statements; 0 if no rows were affected, or the statement failed.
                        int result = command.ExecuteNonQuery();
                        if (result == 0)
                        {
                            throw new DBConcurrencyException("The entity is out of date on the client. Please update the entity and try again. This could also be thrown if the sql statement failed to execute.");
                        }

                        _originalBudgetTypeIDProperty = this.BudgetTypeID;
                    }
                    UpdateChildren(this, connection, trans);
                    //FieldManager.UpdateChildren(this, connection);
                    trans.Commit();
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    throw;
                }
            }

            OnUpdated();
        }
 /// <summary>
 /// CodeSmith generated stub method that is called when deleting the child <see cref="BudgetType"/> object.
 /// </summary>
 /// <param name="criteria"><see cref="BudgetTypeCriteria"/> object containing the criteria of the object to delete.</param>
 /// <param name="cancel">Value returned from the method indicating whether the object deletion should proceed.</param>
 //partial void OnDeleting(BudgetTypeCriteria criteria, ref bool cancel);
 /// <summary>
 /// CodeSmith generated stub method that is called when deleting the child <see cref="BudgetType"/> object.
 /// </summary>
 /// <param name="criteria"><see cref="BudgetTypeCriteria"/> object containing the criteria of the object to delete.</param>
 /// <param name="connection"></param>
 /// <param name="cancel">Value returned from the method indicating whether the object deletion should proceed.</param>
 partial void OnDeleting(BudgetTypeCriteria criteria, SqlConnection connection, ref bool cancel);
 /// <summary>
 /// CodeSmith generated stub method that is called when fetching the child <see cref="BudgetType"/> object.
 /// </summary>
 /// <param name="criteria"><see cref="BudgetTypeCriteria"/> object containing the criteria of the object to fetch.</param>
 /// <param name="cancel">Value returned from the method indicating whether the object fetching should proceed.</param>
 partial void OnChildFetching(BudgetTypeCriteria criteria, ref bool cancel);
 /// <summary>
 /// CodeSmith generated stub method that is called when deleting the <see cref="BudgetType"/> object.
 /// </summary>
 /// <param name="criteria"><see cref="BudgetTypeCriteria"/> object containing the criteria of the object to delete.</param>
 /// <param name="cancel">Value returned from the method indicating whether the object deletion should proceed.</param>
 partial void OnDeleting(BudgetTypeCriteria criteria, ref bool cancel);
        public static BudgetTypeList GetByCriteria(BudgetTypeCriteria criteria)
        {
            return(new BudgetTypeList().DataPortal_Fetch(criteria));
//            return DataPortal.Fetch<BudgetTypeList>(criteria);
        }