SQL Artisan之数据处理上下文对象
SQL Artisan的下一个版本引入ConnectionContext和TransactionContext两个数据处理上下文对象。两个对象的功能主要是让不同区域的数据库访问代码共享数库连接和事务。TransactionContext是ConnectionContext派生类除了共享事务外还共享数据库连接,而ConnectionContext只提共享数据库连接。以上两个上面文对象都支持嵌套,当存在嵌套时只有最外层的上下文对象为生效对象,内部所有上下文对象会自动放弃自有功能。
运用数据处理上下文对象的代码:
public void DelEmp(int employeeid)
{
Employees.TBL.Delete(Employees._EmployeeID == employeeid);
}
public void DelOrders(Expression exp)
{
using(TransactionContext tran = new TransactionContext())
{
OrderDetails.TBL.Delete(OrderDetails._OrderID.In(Orders.TBL,
Orders._OrderID,exp));
Orders.TBL.Delete(exp);
tran.Commit();
}
}
public void DelEmpAndOrders(int employeeid)
{
using(TransactionContext tran = new TransactionContext())
{
DelOrders(Orders._EmployeeID == employeeid);
DelEmp(employeeid);
tran.Commit();
}
}