/// <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(CandidateMetaDataContract row)
        {
            var rowCount = 0;

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

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


            return(rowCount);
        }
        /// <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(CandidateMetaDataContract row, SqlConnection connection, SqlTransaction transaction)
        {
            var rowCount = 0;

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

                rowCount = cmd.ExecuteNonQuery();
            }


            return(rowCount);
        }
        /// <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(CandidateMetaDataContract row)
        {
            int?result = null;

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

                    result = (int?)cmd.ExecuteScalar();
                    row.CandidateMetaDataId = result;
                }
            });
            return(result != null ? 1 : 0);
        }
        /// <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(CandidateMetaDataContract row, SqlConnection connection, SqlTransaction transaction)
        {
            int?result = null;

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

                result = (int?)cmd.ExecuteScalar();
                row.CandidateMetaDataId = 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(CandidateMetaDataContract row, SqlConnection connection, SqlTransaction transaction)
 {
     if (row.CandidateMetaDataId == 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(CandidateMetaDataContract row)
 {
     if (row.CandidateMetaDataId == 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(CandidateMetaDataContract row, SqlConnection connection, SqlTransaction transaction)
        {
            if (row == null)
            {
                return(0);
            }
            if (row.CandidateMetaDataId != 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(CandidateMetaDataContract row)
        {
            if (row == null)
            {
                return(0);
            }
            if (row.CandidateMetaDataId != null)
            {
                return(Update(row));
            }

            return(Insert(row));
        }
 /// <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(CandidateMetaDataContract row, SqlConnection connection, SqlTransaction transaction)
 {
     return((new CandidateMetaDataLogic()).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(CandidateMetaDataContract row)
 {
     return((new CandidateMetaDataLogic()).Insert(row));
 }
 /// <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(CandidateMetaDataContract row)
 {
     return((new CandidateMetaDataLogic()).Delete(row));
 }