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;