/// <summary>
        /// Update by providing a populated data contract
        /// </summary>
        /// <param name="row">The table row data to use</param>
        /// <param name="connection">The SqlConnection to use</param>
        /// <param name="transaction">The SqlTransaction to use</param>
        /// <returns>The number of rows affected.</returns>
        public virtual int Update(MetaDataContract row, SqlConnection connection, SqlTransaction transaction)
        {
            var rowCount = 0;

            using (
                var cmd = new SqlCommand("[Data].[MetaData_Update]", connection)
            {
                CommandType = CommandType.StoredProcedure, Transaction = transaction
            })
            {
                cmd.Parameters.AddRange(new[] {
                    new SqlParameter("@MetaDataId", row.MetaDataId)
                    ,
                    new SqlParameter("@ContentInspectionId", row.ContentInspectionId)
                    ,
                    new SqlParameter("@MetaDataName", row.MetaDataName)
                    ,
                    new SqlParameter("@IsRequired", row.IsRequired)
                    ,
                    new SqlParameter("@AppliesAtAllLevels", row.AppliesAtAllLevels)
                    ,
                    new SqlParameter("@AppliesToCandidates", row.AppliesToCandidates)
                    ,
                    new SqlParameter("@AppliesToOrganizations", row.AppliesToOrganizations)
                });

                rowCount = cmd.ExecuteNonQuery();
            }


            return(rowCount);
        }
        /// <summary>
        /// Insert by providing a populated data contract
        /// </summary>
        /// <param name="row">The table row data to use</param>
        /// <param name="connection">The SqlConnection to use</param>
        /// <param name="transaction">The SqlTransaction to use</param>
        /// <returns>1, if insert was successful</returns>
        public int Insert(MetaDataContract row, SqlConnection connection, SqlTransaction transaction)
        {
            int?result = null;

            using (
                var cmd = new SqlCommand("[Data].[MetaData_Insert]", connection)
            {
                CommandType = CommandType.StoredProcedure, Transaction = transaction
            })
            {
                cmd.Parameters.AddRange(new[] {
                    new SqlParameter("@ContentInspectionId", row.ContentInspectionId)
                    ,
                    new SqlParameter("@MetaDataName", row.MetaDataName)
                    ,
                    new SqlParameter("@IsRequired", row.IsRequired)
                    ,
                    new SqlParameter("@AppliesAtAllLevels", row.AppliesAtAllLevels)
                    ,
                    new SqlParameter("@AppliesToCandidates", row.AppliesToCandidates)
                    ,
                    new SqlParameter("@AppliesToOrganizations", row.AppliesToOrganizations)
                });

                result         = (int?)cmd.ExecuteScalar();
                row.MetaDataId = result;
            }
            return(result != null ? 1 : 0);
        }
        /// <summary>
        /// Insert by providing a populated data row container
        /// </summary>
        /// <param name="row">The table row data to use</param>
        /// <returns>1, if insert was successful</returns>
        public int Insert(MetaDataContract row)
        {
            int?result = null;

            VotingInfoDb.ConnectThen(x =>
            {
                using (
                    var cmd = new SqlCommand("[Data].[MetaData_Insert]", x)
                {
                    CommandType = CommandType.StoredProcedure,
                    CommandTimeout = DefaultCommandTimeout
                })
                {
                    cmd.Parameters.AddRange(new[] {
                        new SqlParameter("@ContentInspectionId", row.ContentInspectionId)
                        ,
                        new SqlParameter("@MetaDataName", row.MetaDataName)
                        ,
                        new SqlParameter("@IsRequired", row.IsRequired)
                        ,
                        new SqlParameter("@AppliesAtAllLevels", row.AppliesAtAllLevels)
                        ,
                        new SqlParameter("@AppliesToCandidates", row.AppliesToCandidates)
                        ,
                        new SqlParameter("@AppliesToOrganizations", row.AppliesToOrganizations)
                    });

                    result         = (int?)cmd.ExecuteScalar();
                    row.MetaDataId = result;
                }
            });
            return(result != null ? 1 : 0);
        }
 /// <summary>
 /// Saves the row, either by inserting (when the identity key is null) or by updating (identity key has value).
 /// </summary>
 /// <param name="row">The data to save</param>
 /// <param name="connection">The SqlConnection to use</param>
 /// <param name="transaction">The SqlTransaction to use</param>
 /// <returns>The number of rows affected.</returns>
 public static int SaveNow(MetaDataContract row, SqlConnection connection, SqlTransaction transaction)
 {
     if (row.MetaDataId == null)
     {
         return(InsertNow(row, connection, transaction));
     }
     else
     {
         return(UpdateNow(row, connection, transaction));
     }
 }
 /// <summary>
 /// Saves the row, either by inserting (when the identity key is null) or by updating (identity key has value).
 /// </summary>
 /// <param name="row">The data to save</param>
 /// <returns>The number of rows affected.</returns>
 public static int SaveNow(MetaDataContract row)
 {
     if (row.MetaDataId == null)
     {
         return(InsertNow(row));
     }
     else
     {
         return(UpdateNow(row));
     }
 }
        /// <summary>
        /// Saves the row, either by inserting (when the identity key is null) or by updating (identity key has value).
        /// </summary>
        /// <param name="row">The data to save</param>
        /// <param name="connection">The SqlConnection to use</param>
        /// <param name="transaction">The SqlTransaction to use</param>
        /// <returns>The number of rows affected.</returns>
        public virtual int Save(MetaDataContract row, SqlConnection connection, SqlTransaction transaction)
        {
            if (row == null)
            {
                return(0);
            }
            if (row.MetaDataId != null)
            {
                return(Update(row, connection, transaction));
            }

            return(Insert(row, connection, transaction));
        }
        /// <summary>
        /// Saves the row, either by inserting (when the identity key is null) or by updating (identity key has value).
        /// </summary>
        /// <param name="row">The data to save</param>
        /// <returns>The number of rows affected.</returns>
        public virtual int Save(MetaDataContract row)
        {
            if (row == null)
            {
                return(0);
            }
            if (row.MetaDataId != null)
            {
                return(Update(row));
            }

            return(Insert(row));
        }
        /// <summary>
        /// Delete by providing a populated data contract
        /// </summary>
        /// <param name="row">The table row data to use</param>
        /// <param name="connection">The SqlConnection to use</param>
        /// <param name="transaction">The SqlTransaction to use</param>
        /// <returns>The number of rows affected.</returns>
        public virtual int Delete(MetaDataContract row, SqlConnection connection, SqlTransaction transaction)
        {
            var rowCount = 0;

            using (
                var cmd = new SqlCommand("[Data].[MetaData_Delete]", connection)
            {
                CommandType = CommandType.StoredProcedure, Transaction = transaction
            })
            {
                cmd.Parameters.AddRange(new[] {
                    new SqlParameter("@MetaDataId", row.MetaDataId)
                });

                rowCount = cmd.ExecuteNonQuery();
            }


            return(rowCount);
        }
        /// <summary>
        /// Delete by providing a populated data row container
        /// </summary>
        /// <param name="row">The table row data to use</param>
        /// <returns>The number of rows affected.</returns>
        public virtual int Delete(MetaDataContract row)
        {
            var rowCount = 0;

            VotingInfoDb.ConnectThen(x =>
            {
                using (
                    var cmd = new SqlCommand("[Data].[MetaData_Delete]", x)
                {
                    CommandType = CommandType.StoredProcedure,
                    CommandTimeout = DefaultCommandTimeout
                })
                {
                    cmd.Parameters.AddRange(new[] {
                        new SqlParameter("@MetaDataId", row.MetaDataId)
                    });

                    rowCount = cmd.ExecuteNonQuery();
                }
            });


            return(rowCount);
        }
        /// <summary>
        /// Update by providing a populated data row container
        /// </summary>
        /// <param name="row">The table row data to use</param>
        /// <returns>The number of rows affected.</returns>
        public virtual int Update(MetaDataContract row)
        {
            var rowCount = 0;

            VotingInfoDb.ConnectThen(x =>
            {
                using (
                    var cmd = new SqlCommand("[Data].[MetaData_Update]", x)
                {
                    CommandType = CommandType.StoredProcedure,
                    CommandTimeout = DefaultCommandTimeout
                })
                {
                    cmd.Parameters.AddRange(new[] {
                        new SqlParameter("@MetaDataId", row.MetaDataId)
                        ,
                        new SqlParameter("@ContentInspectionId", row.ContentInspectionId)
                        ,
                        new SqlParameter("@MetaDataName", row.MetaDataName)
                        ,
                        new SqlParameter("@IsRequired", row.IsRequired)
                        ,
                        new SqlParameter("@AppliesAtAllLevels", row.AppliesAtAllLevels)
                        ,
                        new SqlParameter("@AppliesToCandidates", row.AppliesToCandidates)
                        ,
                        new SqlParameter("@AppliesToOrganizations", row.AppliesToOrganizations)
                    });

                    rowCount = cmd.ExecuteNonQuery();
                }
            });


            return(rowCount);
        }
 /// <summary>
 /// Insert by providing a populated data contract
 /// </summary>
 /// <param name="row">The table row data to use</param>
 /// <param name="connection">The SqlConnection to use</param>
 /// <param name="transaction">The SqlTransaction to use</param>
 /// <returns>The number of rows affected.</returns>
 public static int InsertNow(MetaDataContract row, SqlConnection connection, SqlTransaction transaction)
 {
     return((new MetaDataLogic()).Insert(row, connection, transaction));
 }
 /// <summary>
 /// Insert by providing a populated data row container
 /// </summary>
 /// <param name="row">The table row data to use</param>
 /// <returns>The number of rows affected.</returns>
 public static int InsertNow(MetaDataContract row)
 {
     return((new MetaDataLogic()).Insert(row));
 }
 /// <summary>
 /// Delete by providing a populated data contract
 /// </summary>
 /// <param name="row">The table row data to use</param>
 /// <param name="connection">The SqlConnection to use</param>
 /// <param name="transaction">The SqlTransaction to use</param>
 /// <returns>The number of rows affected.</returns>
 public static int DeleteNow(MetaDataContract row, SqlConnection connection, SqlTransaction transaction)
 {
     return((new MetaDataLogic()).Delete(row, connection, transaction));
 }
 /// <summary>
 /// Delete by providing a populated data row container
 /// </summary>
 /// <param name="row">The table row data to use</param>
 /// <returns>The number of rows affected.</returns>
 public static int DeleteNow(MetaDataContract row)
 {
     return((new MetaDataLogic()).Delete(row));
 }