public void ExecuteReader(Query query, Action<RecordReader> recordReader) { var cmd = this.NewCommand(query); try { this.Connection.Open(); using (RecordReader reader = new RecordReader(cmd.ExecuteReader() as DbDataReader)) { if (reader.HasRows) { while (reader.Read()) { recordReader(reader); } } reader.Destroy(); } //this.Bubble(query); } catch (Exception ex) { //ex = new DataException("Database.ExecuteReader Error-> " + ex.Message, ex.InnerException); ex = new DatabaseException(this.DatabaseName, query, "ExecuteReader Error-> " + ex.Message, ex); //Self.Fork(delegate(object evt) { // this.Source.Bubble((DatabaseEvent)evt); //}, new DatabaseEvent(query, TimeSpan.FromMilliseconds(this.ElapsedTS), ex)); throw ex; } finally { cmd.Dispose(); this.Connection.TryClose(); } }