/// <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); } } } }
/// <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)); }
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); }
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; }
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; }
/// <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); }
private void Dispose(bool disposing) { if (disposing && !_disposed) { _reader.Dispose(); _enumerator.Dispose(); } _reader = null; _enumerator = null; _disposed = true; }
/// <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)); }
/// <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))); }
public GettingReaderResult(IDbDataReader dataReader, string description) { DataReader = dataReader; Description = description; }