private BankAccount DataPortal_Fetch(BankAccountCriteria 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_BankAccount_Select]", connection))
                {
                    command.CommandType = CommandType.StoredProcedure;
                    command.Parameters.AddRange(ADOHelper.SqlParameters(criteria.StateBag));
                    command.Parameters.AddWithValue("@p_BSBDetailIDHasValue", criteria.BSBDetailIDHasValue);
                    command.Parameters.AddWithValue("@p_UpdatedByHasValue", criteria.UpdatedByHasValue);
                    command.Parameters.AddWithValue("@p_UpdatedOnHasValue", criteria.UpdatedOnHasValue);
                    using (var reader = command.ExecuteReader())
                    {
                        var rowParser = reader.GetRowParser <BankAccount>();
                        if (reader.Read())
                        {
                            return(GetBankAccount(rowParser, reader));
                        }
                        else
                        {
                            throw new Exception(String.Format("The record was not found in 'dbo.BankAccount' using the following criteria: {0}.", criteria));
                        }
                    }
                }
            }
            OnFetched();
        }
        //[Transactional(TransactionalTypes.TransactionScope)]
        protected void DataPortal_Delete(BankAccountCriteria 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_BankAccount_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();
        }
        /// <summary>
        /// Returns a <see cref="BankAccountList"/> object of the specified criteria.
        /// </summary>
        /// <param name="createdBy">No additional detail available.</param>
        /// <returns>A <see cref="BankAccountList"/> object of the specified criteria.</returns>
        public static BankAccountList GetByCreatedBy(System.Int32 createdBy)
        {
            var criteria = new BankAccountCriteria {
                CreatedBy = createdBy
            };


            return(new BankAccountList().DataPortal_Fetch(criteria));
        }
        /// <summary>
        /// Returns a <see cref="BankAccountList"/> object of the specified criteria.
        /// </summary>
        /// <param name="bankAccountID">No additional detail available.</param>
        /// <returns>A <see cref="BankAccountList"/> object of the specified criteria.</returns>
        public static BankAccountList GetByBankAccountID(System.Int32 bankAccountID)
        {
            var criteria = new BankAccountCriteria {
                BankAccountID = bankAccountID
            };


            return(new BankAccountList().DataPortal_Fetch(criteria));
        }
        public static void DeleteBankAccount(System.Int32 bankAccountID)
        {
            var criteria = new BankAccountCriteria {
                BankAccountID = bankAccountID
            };


            new BankAccount().DataPortal_Delete(criteria);
        }
        /// <summary>
        /// CodeSmith generated stub method that is called after the child <see cref="BankAccount"/> 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 BankAccount table in the database for the specified criteria.
        /// </summary>
        /// <param name="criteria">The criteria parameter is an <see cref="BankAccount"/> object.</param>
        /// <returns>A boolean value of true is returned if a record is found.</returns>
        public static BankAccount Exists(BankAccountCriteria criteria)
        {
            try
            {
                return(new BankAccount().DataPortal_Fetch(criteria));
            }
            catch (Exception ex)
            {
            }
            return(null);
        }
        /// <summary>
        /// Returns a <see cref="BankAccountList"/> object of the specified criteria.
        /// </summary>
        /// <param name="updatedBy">No additional detail available.</param>
        /// <returns>A <see cref="BankAccountList"/> object of the specified criteria.</returns>
        public static BankAccountList GetByUpdatedBy(System.Int32?updatedBy)
        {
            var criteria = new BankAccountCriteria {
            };

            if (updatedBy.HasValue)
            {
                criteria.UpdatedBy = updatedBy.Value;
            }

            return(new BankAccountList().DataPortal_Fetch(criteria));
        }
        /// <summary>
        /// Returns a <see cref="BankAccountList"/> object of the specified criteria.
        /// </summary>
        /// <param name="bSBDetailID">No additional detail available.</param>
        /// <returns>A <see cref="BankAccountList"/> object of the specified criteria.</returns>
        public static BankAccountList GetByBSBDetailID(System.Int32?bSBDetailID)
        {
            var criteria = new BankAccountCriteria {
            };

            if (bSBDetailID.HasValue)
            {
                criteria.BSBDetailID = bSBDetailID.Value;
            }

            return(new BankAccountList().DataPortal_Fetch(criteria));
        }
        private BankAccountList DataPortal_Fetch(BankAccountCriteria 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_BankAccount_Select]", connection))
                {
                    command.CommandType = CommandType.StoredProcedure;

                    command.Parameters.AddRange(ADOHelper.SqlParameters(criteria.StateBag));
                    command.Parameters.AddWithValue("@p_BSBDetailIDHasValue", criteria.BSBDetailIDHasValue);
                    command.Parameters.AddWithValue("@p_UpdatedByHasValue", criteria.UpdatedByHasValue);
                    command.Parameters.AddWithValue("@p_UpdatedOnHasValue", criteria.UpdatedOnHasValue);
                    using (var reader = command.ExecuteReader())
                    {
                        if (reader.Read())
                        {
                            var rowParser = reader.GetRowParser <CFMData.BankAccount>();
                            do
                            {
                                this.Add(CFMData.BankAccount.GetBankAccount(rowParser, reader));
                            }while(reader.Read());
                        }
                        OnFetched();
                        return(this);
                    }
                }
            }

            //RaiseListChangedEvents = true;
        }
 /// <summary>
 /// CodeSmith generated stub method that is called when fetching the child <see cref="BankAccount"/> object.
 /// </summary>
 /// <param name="criteria"><see cref="BankAccountCriteria"/> 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 OnFetching(BankAccountCriteria criteria, ref bool cancel);
        public static BankAccountList GetByCriteria(BankAccountCriteria criteria)
        {
            return(new BankAccountList().DataPortal_Fetch(criteria));
//            return DataPortal.Fetch<BankAccountList>(criteria);
        }
 /// <summary>
 /// CodeSmith generated stub method that is called when deleting the child <see cref="BankAccount"/> object.
 /// </summary>
 /// <param name="criteria"><see cref="BankAccountCriteria"/> 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(BankAccountCriteria criteria, ref bool cancel);
 /// <summary>
 /// CodeSmith generated stub method that is called when deleting the child <see cref="BankAccount"/> object.
 /// </summary>
 /// <param name="criteria"><see cref="BankAccountCriteria"/> 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(BankAccountCriteria criteria, SqlConnection connection, ref bool cancel);
 /// <summary>
 /// CodeSmith generated stub method that is called when deleting the <see cref="BankAccount"/> object.
 /// </summary>
 /// <param name="criteria"><see cref="BankAccountCriteria"/> 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(BankAccountCriteria criteria, ref bool cancel);