Beispiel #1
0
        // transactionを開始して、commitして正常に終わるパターンの例
        internal void UpdateCommitOK(UserEntity data)
        {
            using (var cn = DbConnectionUtil.GetConnection())
            {

                cn.Open();

                // 通常のADO.NETと同様、トランザクションを開始する
                var tr = cn.BeginTransaction();

                try
                {
                    // Execute拡張メソッドの第三引数:transactionに開始したトランザクションをセット
                    cn.Execute(" UPDATE Users " +
                               " SET " +
                               "     FirstName = @FirstName , " +
                               "     LastName = @LastName , " +
                               "     Email = @Email , " +
                               "     Age = @Age " +
                               " WHERE " +
                               "     Id = @ID ",
                               data,
                               tr);

                    // 通常通り、コミットすればOK
                    tr.Commit();
                }
                catch (Exception)
                {
                    // 例外の場合等は、ロールバックする。
                    tr.Rollback();
                }
            }
        }
Beispiel #2
0
        internal void Create(UserEntity data)
        {
            using (var cn = DbConnectionUtil.GetConnection())
            {
                cn.Open();

                // パラメタライズドクエリでパラメータを設定する場合、その3.
                // バインドに使用しないメンバが存在しても問題ない
                // (今回の場合、data.IDは使用しない為不要だが、あってもエラーにならない
                cn.Execute(" INSERT INTO Users " +
                           "  (FirstName , LastName , Email , Age) " +
                           " VALUES " +
                           "  (@FirstName , @LastName , @Email, @Age )",
                           data);
            }
        }
Beispiel #3
0
        internal void Update(UserEntity data)
        {
            using (var cn = DbConnectionUtil.GetConnection())
            {
                cn.Open();

                // パラメタライズドクエリでパラメータを設定する場合、その2.
                // 当然、匿名型ではなく名前を持った型も設定可能.
                //
                // なお、UPDATE/INSERT/DELETE等、結果列を返さないクエリの実行はExecute拡張メソッドを利用する。
                cn.Execute(" UPDATE Users " +
                           " SET " +
                           "     FirstName = @FirstName , " +
                           "     LastName = @LastName , " +
                           "     Email = @Email , " +
                           "     Age = @Age " +
                           " WHERE " +
                           "     Id = @ID ",
                           data);
            }
        }