/// <summary> /// 指定された型の主キーのIDを生成します。 /// </summary> /// <typeparam name="T">テーブルにマッピングされた型</typeparam> /// <param name="connection">データベース接続</param> /// <returns>生成されたID</returns> public static int GenerateAutoId <T>(this IDbConnection connection) { var sql = PrimitiveSql.CreateNextAutoIdSql <T>(); return(connection.Query <SequenceNextValue>(sql) .Single() .NEXTVAL); }
/// <summary> /// 指定された型のレコード数を取得します。 /// </summary> /// <typeparam name="T">テーブルにマッピングされた型</typeparam> /// <param name="connection">データベース接続</param> /// <returns>レコード数</returns> public static int Count <T>(this IDbConnection connection) { var sql = PrimitiveSql.CreateCountSql <T>(); return(connection.Query <RecordCount>(sql) .Single() .VALUE); }
/// <summary> /// 指定された型のレコード数を非同期的に取得します。 /// </summary> /// <typeparam name="T">テーブルにマッピングされた型</typeparam> /// <param name="connection">データベース接続</param> /// <returns>レコード数</returns> public static async Task <int> CountAsync <T>(this IDbConnection connection) { var sql = PrimitiveSql.CreateCountSql <T>(); return((await connection.QueryAsync <RecordCount>(sql) .ConfigureAwait(false)) .Single() .VALUE); }
/// <summary> /// 指定された型の主キーのIDを非同期的に生成します。 /// </summary> /// <typeparam name="T">テーブルにマッピングされた型</typeparam> /// <param name="connection">データベース接続</param> /// <returns>生成されたID</returns> public static async Task <int> GenerateAutoIdAsync <T>(this IDbConnection connection) { var sql = PrimitiveSql.CreateNextAutoIdSql <T>(); return((await connection.QueryAsync <SequenceNextValue>(sql) .ConfigureAwait(false)) .Single() .NEXTVAL); }
/// <summary> /// 指定されたデータをテーブルに挿入します。 /// </summary> /// <typeparam name="T">テーブルにマッピングされた型</typeparam> /// <param name="connection">データベース接続</param> /// <param name="data">挿入するデータ</param> /// <returns>影響を受けたレコード数</returns> public static int Insert <T>(this IDbConnection connection, T data) { var sql = PrimitiveSql.CreateInsertSql <T>(); return(connection.Execute(sql, data)); }
/// <summary> /// テーブルから全レコードを非同期的に削除します。 /// </summary> /// <typeparam name="T">テーブルにマッピングされた型</typeparam> /// <param name="connection">データベース接続</param> /// <returns>影響を受けたレコード数</returns> public static Task <int> DeleteAllAsync <T>(this IDbConnection connection) { var sql = PrimitiveSql.CreateDeleteAllSql <T>(); return(connection.ExecuteAsync(sql)); }
/// <summary> /// テーブルから全レコードを削除します。 /// </summary> /// <typeparam name="T">テーブルにマッピングされた型</typeparam> /// <param name="connection">データベース接続</param> /// <returns>影響を受けたレコード数</returns> public static int DeleteAll <T>(this IDbConnection connection) { var sql = PrimitiveSql.CreateDeleteAllSql <T>(); return(connection.Execute(sql)); }
/// <summary> /// 指定されたレコードをテーブルから非同期的に削除します。 /// </summary> /// <typeparam name="T">テーブルにマッピングされた型</typeparam> /// <param name="connection">データベース接続</param> /// <param name="data">削除するデータのコレクション</param> /// <returns>影響を受けたレコード数</returns> public static Task <int> DeleteAsync <T>(this IDbConnection connection, IEnumerable <T> data) { var sql = PrimitiveSql.CreateDeleteSql <T>(); return(connection.ExecuteAsync(sql, data)); }
/// <summary> /// 全件を指定されたデータで非同期的に更新します。 /// </summary> /// <typeparam name="T">テーブルにマッピングされた型</typeparam> /// <param name="connection">データベース接続</param> /// <param name="data">更新するデータ</param> /// <param name="properties">更新対象の列</param> /// <returns>影響を受けたレコード数</returns> public static Task <int> UpdateAllAsync <T>(this IDbConnection connection, T data, params Expression <Func <T, object> >[] properties) { var sql = PrimitiveSql.CreateUpdateAllSql <T>(properties); return(connection.ExecuteAsync(sql, data)); }
/// <summary> /// 指定されたレコードを更新します。 /// </summary> /// <typeparam name="T">テーブルにマッピングされた型</typeparam> /// <param name="connection">データベース接続</param> /// <param name="data">更新するデータのコレクション</param> /// <param name="properties">更新対象の列</param> /// <returns>影響を受けたレコード数</returns> public static int Update <T>(this IDbConnection connection, IEnumerable <T> data, params Expression <Func <T, object> >[] properties) { var sql = PrimitiveSql.CreateUpdateSql <T>(properties); return(connection.Execute(sql, data)); }
/// <summary> /// 指定されたデータをテーブルに非同期的に挿入します。 /// </summary> /// <typeparam name="T">テーブルにマッピングされた型</typeparam> /// <param name="connection">データベース接続</param> /// <param name="data">挿入するデータ</param> /// <returns>影響を受けたレコード数</returns> public static Task <int> InsertAsync <T>(this IDbConnection connection, T data) { var sql = PrimitiveSql.CreateInsertSql <T>(); return(connection.ExecuteAsync(sql, data)); }