Beispiel #1
0
 /// <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));
 }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
 /// <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));
 }
Beispiel #4
0
        /// <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);
        }