Microsoft.Practices.EnterpriseLibrary.Data.dll , v2.0.50727
1.帶事務連接
Database db = DatabaseFactory.CreateDatabase();
using (DbConnection Conn = db.CreateConnection())
{
if (Conn.State != ConnectionState.Open)
{
Conn.Open();
}
DbTransaction Tran = Conn.BeginTransaction();//默認2級
try
{
strSql = "select * from test where dTypeID=@dTypeID";
DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString());
db.AddInParameter(dbCommand, "dTypeID", DbType.Int32, dTypeID
db.ExecuteScalar(dbCommand, dbTran);
Tran.Commit();
}
catch (Exception ex)
{
Tran.Rollback();
}
}
2.企業庫的事務級別
默認2級,以最後一次設置的級別爲當前執行級別。若有nolock則按最低級執行
例如:若上次執行的事務級別設置成1級,則當前無事務查詢就會變成1級
Database db = DatabaseFactory.CreateDatabase("mssqlConnectionString");
using (DbConnection connection = db.CreateConnection())
{
connection.Open();
DbTransaction transaction = connection.BeginTransaction(IsolationLevel.ReadUncommitted);//1級最低級
StringBuilder strSql = new StringBuilder();
strSql.Append(" select BuyAmount from UnionLottoMergeDetail ");
DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString());
DataSet ds = db.ExecuteDataSet(dbCommand, transaction);
transaction.Commit();
this.dataGridView1.DataSource = ds.Tables[0].DefaultView;
}
//若不設置事務等級,則會按上次使用時設置的等級執行
this.dataGridView2.DataSource = null;
Database db = DatabaseFactory.CreateDatabase("mssqlConnectionString");
StringBuilder strSql = new StringBuilder();
strSql.Append(" select BuyAmount from UnionLottoMergeDetail ");
DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString());
DataSet ds = db.ExecuteDataSet(dbCommand);
this.dataGridView2.DataSource = ds.Tables[0].DefaultView;