/// <summary> /// /// </summary> /// <param name="database"></param> /// <returns></returns> public IEnumerable<StoredProcedureResultSet> EnumerateResultSets(Database database) { if (database == null) throw new ArgumentNullException("database"); DbDataReader dr = null; var previousState = database.ConnectionState; try { var resultsets = new List<StoredProcedureResultSet>(); var cm = CreateCommand(); dr = database.ExecuteReader(cm); while (dr.Read()) { var rs = CreateResultSets(dr); resultsets.Add(rs); yield return rs; } dr.Close(); this.SetOutputParameterValue(cm); } finally { if (dr != null) { dr.Dispose(); } if (previousState == ConnectionState.Closed && database.ConnectionState == ConnectionState.Open) { database.Close(); } if (previousState == ConnectionState.Closed && database.OnTransaction == false) { database.Dispose(); } } }
/// <summary> /// /// </summary> /// <param name="database"></param> /// <returns></returns> public DataTable GetDataTable(Database database) { if (database == null) throw new ArgumentNullException("database"); var previousState = database.ConnectionState; try { var cm = CreateCommand(); var dt = database.GetDataTable(cm); return dt; } finally { if (previousState == ConnectionState.Closed && database.OnTransaction == false) { database.Dispose(); } } }