private IEnumerable <T> ExecuteBatch <T>(QueryCommand query, IEnumerable <object[]> paramSets, Func <FieldReader, T> fnProjector, MappingEntity entity) { this.LogCommand(query, null); DbCommand cmd = this.GetCommand(query, null); cmd.Prepare(); foreach (var paramValues in paramSets) { this.LogParameters(query, paramValues); this.LogMessage(""); this.SetParameterValues(query, cmd, paramValues); var reader = this.ExecuteReader(cmd); var freader = new DbFieldReader(this, reader); try { if (reader.HasRows) { reader.Read(); yield return(fnProjector(freader)); } else { yield return(default(T)); } } finally { reader.Close(); } } }
public override IEnumerable <T> ExecuteDeferred <T>(QueryCommand query, Func <FieldReader, T> fnProjector, MappingEntity entity, object[] paramValues) { this.LogCommand(query, paramValues); this.StartUsingConnection(); try { DbCommand cmd = this.GetCommand(query, paramValues); var reader = this.ExecuteReader(cmd); var freader = new DbFieldReader(this, reader); try { while (reader.Read()) { yield return(fnProjector(freader)); } } finally { reader.Close(); } } finally { this.StopUsingConnection(); } }
protected virtual IEnumerable <T> Project <T>(DbDataReader reader, Func <FieldReader, T> fnProjector, MappingEntity entity, bool closeReader) { var freader = new DbFieldReader(this, reader); try { while (reader.Read()) { yield return(fnProjector(freader)); } } finally { if (closeReader) { reader.Close(); } } }