Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        /// <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);
        }
Beispiel #5
0
        /// <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));
        }
Beispiel #6
0
        /// <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));
        }
Beispiel #7
0
        /// <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));
        }
Beispiel #8
0
        /// <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));
        }
Beispiel #9
0
        /// <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));
        }
Beispiel #10
0
        /// <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));
        }
Beispiel #11
0
        /// <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));
        }