/// <summary> /// トランザクションからデータベース操作のインスタンスを生成します。 /// </summary> /// <param name="transaction">トランザクション</param> /// <param name="timeout">タイムアウト時間</param> /// <returns>データベース操作</returns> public static This Create(IDbTransaction transaction, int?timeout) { if (transaction == null) { throw new ArgumentNullException(nameof(transaction)); } return(This.Create(transaction.Connection, transaction, timeout)); }
/// <summary> /// 指定されたレコードをテーブルに挿入し、自動採番IDを返します。 /// </summary> /// <typeparam name="T">テーブルにマッピングされた型</typeparam> /// <param name="data">挿入するデータ</param> /// <returns>自動採番ID</returns> public virtual long InsertAndGet <T>(T data) { This.AssertInsertAndGet <T>(); var sql = this.CreateInsertAndGetSql <T>(); var reader = this.Connection.QueryMultiple(sql, data, this.Transaction, this.Timeout); return((long)reader.Read().First().Id); }
/// <summary> /// データベース接続からデータベース操作のインスタンスを生成します。 /// </summary> /// <param name="connection">データベース接続</param> /// <param name="timeout">タイムアウト時間</param> /// <returns>データベース操作</returns> public static This Create(IDbConnection connection, int?timeout) { if (connection == null) { throw new ArgumentNullException(nameof(connection)); } return(This.Create(connection, null, timeout)); }
/// <summary> /// 指定されたレコードをテーブルに非同期的に挿入し、自動採番IDを返します。 /// </summary> /// <typeparam name="T">テーブルにマッピングされた型</typeparam> /// <param name="data">挿入するデータ</param> /// <returns>自動採番ID</returns> public virtual async Task <long> InsertAndGetAsync <T>(T data) { This.AssertInsertAndGet <T>(); var sql = this.CreateInsertAndGetSql <T>(); var reader = await this.Connection.QueryMultipleAsync(sql, data, this.Transaction, this.Timeout).ConfigureAwait(false); var results = await reader.ReadAsync().ConfigureAwait(false); return((long)results.First().Id); }