Exemplo n.º 1
0
        /// <summary>
        /// Creates an IEnumerable of T from an open DataReader instance.
        ///
        /// Note this method uses Reflection so this isn't a high performance
        /// operation, but it can be useful for generic data reader to entity
        /// conversions on the fly and with anonymous types.
        /// </summary>
        /// <param name="reader">An open DataReader that's in position to read</param>
        /// <param name="fieldsToSkip">Optional - comma delimited list of fields that you don't want to update</param>
        /// <param name="piList">
        /// Optional - Cached PropertyInfo dictionary that holds property info data for this object.
        /// Can be used for caching hte PropertyInfo structure for multiple operations to speed up
        /// translation. If not passed automatically created.
        /// </param>
        /// <returns></returns>
        public static IEnumerable <T> DataReaderToIEnumerable <T>(IDbDataReader reader, string fieldsToSkip = null, Dictionary <string, PropertyInfo> piList = null)
            where T : new()
        {
            if (reader != null)
            {
                using (reader)
                {
                    // Get a list of PropertyInfo objects we can cache for looping
                    if (piList == null)
                    {
                        piList = new Dictionary <string, PropertyInfo>();
                        var props = typeof(T).GetProperties(BindingFlags.Instance | BindingFlags.Public);
                        foreach (var prop in props)
                        {
                            piList.Add(prop.Name.ToLower(), prop);
                        }
                    }

                    while (reader.Read())
                    {
                        T inst = new T();
                        DataReaderToObject(reader, inst, fieldsToSkip, piList);
                        yield return(inst);
                    }
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Read data from db result
        /// </summary>
        /// <param name="reader">DB reader</param>
        public override void DbRead(IDbDataReader reader)
        {
            base.DbRead(reader);

            OrderId = reader.ReadInt16(nameof(OrderId));
            Text    = reader.ReadString(nameof(Text));
        }
Exemplo n.º 3
0
        public ObjectReader(IDbDataReader reader, Func <IDbDataRecord, TEntity> translator)
        {
            Precondition.Require(reader, () => Error.ArgumentNull("reader"));
            Precondition.Require(translator, () => Error.ArgumentNull("translator"));

            _enumerator = new ObjectEnumerator <TEntity>(reader, translator);
        }
Exemplo n.º 4
0
        public ObjectEnumerator(IDbDataReader reader, IDbMaterializer <TEntity> materializer)
        {
            Precondition.Require(reader, () => Error.ArgumentNull("reader"));
            Precondition.Require(materializer, () => Error.ArgumentNull("materializer"));

            _reader     = reader;
            _enumerator = _reader.GetEnumerator();
            _translator = materializer.Materialize;
        }
Exemplo n.º 5
0
        public ObjectEnumerator(IDbDataReader reader, Func <IDbDataRecord, TEntity> translator)
        {
            Precondition.Require(reader, () => Error.ArgumentNull("reader"));
            Precondition.Require(translator, () => Error.ArgumentNull("translator"));

            _reader     = reader;
            _enumerator = _reader.GetEnumerator();
            _translator = translator;
        }
Exemplo n.º 6
0
        /// <summary>
        /// Initializes a new instance of the
        /// <see cref="DbDataRecordEnumerator"/> class.
        /// </summary>
        /// <param name="reader">The data reader instance, containing
        /// the result set.</param>
        /// <param name="lookup">The column name lookup dictionary.</param>
        public DbDataRecordEnumerator(IDbDataReader reader,
                                      DbFieldLookup lookup)
        {
            Precondition.Require(reader, () => Error.ArgumentNull("reader"));
            Precondition.Require(lookup, () => Error.ArgumentNull("lookup"));

            _reader     = reader;
            _lookup     = lookup;
            _enumerator = new DbEnumerator(_reader, false);
        }
Exemplo n.º 7
0
 private void Dispose(bool disposing)
 {
     if (disposing && !_disposed)
     {
         _reader.Dispose();
         _enumerator.Dispose();
     }
     _reader     = null;
     _enumerator = null;
     _disposed   = true;
 }
Exemplo n.º 8
0
        /// <summary>
        /// Read data from db result
        /// </summary>
        /// <param name="reader">DB reader</param>
        public override void DbRead(IDbDataReader reader)
        {
            base.DbRead(reader);

            ParamName     = reader.ReadString(nameof(ParamName));
            ParamType     = SimpleConvert.Convert <SqlDbType>(reader.ReadString(nameof(ParamType)));
            TypeLength    = reader.ReadInt16(nameof(TypeLength));
            TypePrecision = reader.ReadByte(nameof(TypePrecision));
            IsNullable    = SimpleConvert.Convert <bool>(reader.ReadInt32(nameof(IsNullable)));
            OrderId       = reader.ReadInt16(nameof(OrderId));
            Collation     = reader.ReadStringN(nameof(Collation));
        }
Exemplo n.º 9
0
 /// <summary>
 /// Read data from db result
 /// </summary>
 /// <param name="reader">DB reader</param>
 public virtual void DbRead(IDbDataReader reader)
 {
     SchemaName = reader.ReadString(nameof(SchemaName));
     ObjectName = reader.ReadString(nameof(ObjectName));
     ObjectType = SimpleConvert.Convert <MsSqlDbObjectType>(reader.ReadString(nameof(ObjectType)));
 }
Exemplo n.º 10
0
 public GettingReaderResult(IDbDataReader dataReader, string description)
 {
     DataReader = dataReader;
     Description = description;
 }