1. publicbool Transfer(int transactionAmount, int sourceAccount, int destinationAccount) 
  2.         { 
  3.             bool result = false
  4.              
  5.             // Create the Database object, using the default database service. The  
  6.             // default database service is determined through configuration.  
  7.             Database db = DatabaseFactory.CreateDatabase(); 
  8.  
  9.             // Two operations, one to credit an account, and one to debit another  
  10.             // account.  
  11.             string sqlCommand = "CreditAccount"
  12.             DBCommandWrapper creditCommandWrapper = db.GetStoredProcCommandWrapper(sqlCommand); 
  13.  
  14.             creditCommandWrapper.AddInParameter("@AccountID", DbType.Int32, sourceAccount); 
  15.             creditCommandWrapper.AddInParameter("@Amount", DbType.Int32, transactionAmount); 
  16.  
  17.             sqlCommand = "DebitAccount"
  18.             DBCommandWrapper debitCommandWrapper = db.GetStoredProcCommandWrapper(sqlCommand); 
  19.  
  20.             debitCommandWrapper.AddInParameter("@AccountID", DbType.Int32, destinationAccount); 
  21.             debitCommandWrapper.AddInParameter("@Amount", DbType.Int32, transactionAmount); 
  22.  
  23.             using (IDbConnection connection = db.GetConnection()) 
  24.             { 
  25.                 connection.Open(); 
  26.                 IDbTransaction transaction = connection.BeginTransaction(); 
  27.  
  28.                 try 
  29.                 { 
  30.                     // Credit the first account  
  31.                     db.ExecuteNonQuery(creditCommandWrapper, transaction); 
  32.                     // Debit the second account  
  33.                     db.ExecuteNonQuery(debitCommandWrapper, transaction); 
  34.  
  35.                     // Commit the transaction  
  36.                     transaction.Commit(); 
  37.                      
  38.                     result = true
  39.                 } 
  40.                 catch 
  41.                 { 
  42.                     // Rollback transaction   
  43.                     transaction.Rollback(); 
  44.                 } 
  45.                 connection.Close(); 
  46.                  
  47.                 return result; 
  48.             } 
public bool Transfer(int transactionAmount, int sourceAccount, int destinationAccount)
        {
            bool result = false;
            
            // Create the Database object, using the default database service. The
            // default database service is determined through configuration.
            Database db = DatabaseFactory.CreateDatabase();

            // Two operations, one to credit an account, and one to debit another
            // account.
            string sqlCommand = "CreditAccount";
            DBCommandWrapper creditCommandWrapper = db.GetStoredProcCommandWrapper(sqlCommand);

            creditCommandWrapper.AddInParameter("@AccountID", DbType.Int32, sourceAccount);
            creditCommandWrapper.AddInParameter("@Amount", DbType.Int32, transactionAmount);

            sqlCommand = "DebitAccount";
            DBCommandWrapper debitCommandWrapper = db.GetStoredProcCommandWrapper(sqlCommand);

            debitCommandWrapper.AddInParameter("@AccountID", DbType.Int32, destinationAccount);
            debitCommandWrapper.AddInParameter("@Amount", DbType.Int32, transactionAmount);

            using (IDbConnection connection = db.GetConnection())
            {
                connection.Open();
                IDbTransaction transaction = connection.BeginTransaction();

                try
                {
                    // Credit the first account
                    db.ExecuteNonQuery(creditCommandWrapper, transaction);
                    // Debit the second account
                    db.ExecuteNonQuery(debitCommandWrapper, transaction);

                    // Commit the transaction
                    transaction.Commit();
                    
                    result = true;
                }
                catch
                {
                    // Rollback transaction 
                    transaction.Rollback();
                }
                connection.Close();
                
                return result;
            }

 

 

在这段例子代码中,其核心就是关于 IDbTransaction 的使用。

 

=============================================================

自企业库2.0以后,存储过程的command方式有所改变,自至5.0为止都是如下写法

 

 

  1. Database DataBase = default(Database); 
  2. DbCommand dbCommand = DataBase.GetStoredProcCommand("MCS_GET_SEQUENCE"); 
  3. DataBase.AddInParameter(dbCommand, "I_TABLE_NAME", DbType.String, strTable); 
  4. DataBase.AddOutParameter(dbCommand, "O_CUR_SEQUENCE", DbType.Int16,10); 
  5. DataBase.ExecuteNonQuery(dbCommand); 
  6. strSeqNo = Convert.ToInt16(DataBase.GetParameterValue(dbCommand, "O_CUR_SEQUENCE")); 
        Database DataBase = default(Database);
        DbCommand dbCommand = DataBase.GetStoredProcCommand("MCS_GET_SEQUENCE");
        DataBase.AddInParameter(dbCommand, "I_TABLE_NAME", DbType.String, strTable);
        DataBase.AddOutParameter(dbCommand, "O_CUR_SEQUENCE", DbType.Int16,10);
        DataBase.ExecuteNonQuery(dbCommand);
        strSeqNo = Convert.ToInt16(DataBase.GetParameterValue(dbCommand, "O_CUR_SEQUENCE"));

 

using connection的写法也变,新版本为

  1. using (IDbConnection connection = db.CreateConnection()) 
using (IDbConnection connection = db.CreateConnection())