Example #1
0
            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();
                    }
                }
            }
Example #2
0
 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();
     }
 }
Example #3
0
            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();
                    }
                }
            }