/// <summary> /// Delete entity in table "Ts" by a primary key value specified on (T) /// </summary> /// <param name="connection">Open SqlConnection</param> /// <param name="primaryKeyValue">a Single primary key to delete</param> /// <param name="transaction">The transaction to run under, null (the default) if none</param> /// <param name="commandTimeout">Number of seconds before command execution timeout</param> /// <returns>true if deleted, false if not found</returns> public static bool Delete <T>(this IDbConnection connection, object primaryKeyValue, IDbTransaction transaction = null, int?commandTimeout = null) where T : class { var qh = new SqlQueryHelper(typeof(T), connection); var deleteQuery = qh.GenerateSingleKeyQuery(primaryKeyValue, (ti, sql) => qh.Adapter.DeleteQuery(ti, sql)); return(connection.Execute(deleteQuery.SqlStatement, deleteQuery.Parameters, transaction, commandTimeout) > 0); }
/// <summary> /// Returns a single entity of type 'T'. /// </summary> /// <typeparam name="T">Type of entity</typeparam> /// <param name="connection">Open SqlConnection</param> /// <param name="primaryKey">a Single primary key to delete</param> /// <param name="transaction">The transaction to run under, null (the default) if none</param> /// <param name="commandTimeout">Number of seconds before command execution timeout</param> /// <returns>the entity, else null</returns> public static async Task <T> GetAsync <T>(this IDbConnection connection, object primaryKey, IDbTransaction transaction = null, int?commandTimeout = null) where T : class { var sqlHelper = new SqlQueryHelper(typeof(T), connection); var getQuery = sqlHelper.GenerateSingleKeyQuery(primaryKey, (ti, sql) => sqlHelper.Adapter.GetQuery(ti, sql)); return((await connection.QueryAsync <T>(getQuery.SqlStatement, getQuery.Parameters, transaction, commandTimeout)).SingleOrDefault()); }
/// <summary> /// Check if a record exists /// </summary> /// <param name="connection">Open SqlConnection</param> /// <param name="primaryKey">a Single primary key to check</param> /// <param name="transaction">The transaction to run under, null (the default) if none</param> /// <param name="commandTimeout">Number of seconds before command execution timeout</param> /// <returns>true if record is found</returns> public static bool Exists <T>(this IDbConnection connection, object primaryKey, IDbTransaction transaction = null, int?commandTimeout = null) where T : class { var sqlHelper = new SqlQueryHelper(typeof(T), connection); var existsQuery = sqlHelper.GenerateSingleKeyQuery(primaryKey, (ti, sql) => sqlHelper.Adapter.ExistsQuery(ti, sql)); return(connection.ExecuteScalar <bool>(existsQuery.SqlStatement, existsQuery.Parameters, transaction, commandTimeout)); }
/// <summary> /// Delete entity in table "Ts" by a primary key value specified on (T) /// </summary> /// <param name="connection">Open SqlConnection</param> /// <param name="primaryKeyValue">a Single primary key to delete</param> /// <param name="transaction">The transaction to run under, null (the default) if none</param> /// <param name="commandTimeout">Number of seconds before command execution timeout</param> /// <returns>true if deleted, false if not found</returns> public static async Task <bool> DeleteAsync <T>(this IDbConnection connection, object primaryKeyValue, IDbTransaction transaction = null, int?commandTimeout = null) where T : class { var sqlHelper = new SqlQueryHelper(typeof(T), connection); var deleteQuery = sqlHelper.GenerateSingleKeyQuery(primaryKeyValue, (ti, sql) => sqlHelper.Adapter.DeleteQuery(ti, sql)); return(await connection.ExecuteAsync(deleteQuery.SqlStatement, deleteQuery.Parameters, transaction, commandTimeout) > 0); }