你这是两个问题?
1、不知道你是怎么使用,不过建议不要返回DataReader,因为DataReader需要close,你在返回之后就不知道什么时候该将此DataReader关闭了。
2、“让一个函数能够完成一大堆的SQl语句且能够遵循事务处”,将你要做的操作写道一个方法里面就可以了。
public void MyMethode()
{
  SqlConnection conn = ......;
  SqlTransaction aTrans = conn.BeginTransaction(IsolationLevel.ReadCommitted, "MyTrans");
  ......
  try
  { 
    //做你想做的处理
  }
  catch(Exception e)
  {
    aTrans.Rollback("MyTrans");
  }
   ......
  aTrans.Commit();
  conn.Close();
}