/// <summary> /// Converts the <see cref="DbDataReader"/> into an enumerable of data entity object. /// </summary> /// <typeparam name="TEntity">The data entity type to convert.</typeparam> /// <param name="reader">The <see cref="DbDataReader"/> to be converted.</param> /// <param name="basedOnFields">Check whether to create a delegate based on the data reader fields.</param> /// <returns>An array of data entity objects.</returns> internal static IEnumerable <TEntity> ToEnumerable <TEntity>(DbDataReader reader, bool basedOnFields = false) where TEntity : class { if (reader != null && reader.IsClosed == false && reader.HasRows) { var func = FunctionCache.GetDataReaderToDataEntityFunction <TEntity>(reader, basedOnFields); while (reader.Read()) { yield return(func(reader)); } } }
/// <summary> /// Converts the <see cref="DbDataReader"/> into an enumerable of data entity object. /// </summary> /// <typeparam name="TEntity">The data entity type to convert.</typeparam> /// <param name="reader">The <see cref="DbDataReader"/> to be converted.</param> /// <param name="connection">The used <see cref="IDbConnection"/> object.</param> /// <param name="transaction">The transaction object that is currently in used.</param> /// <returns>An array of data entity objects.</returns> public static IEnumerable <TEntity> ToEnumerable <TEntity>(DbDataReader reader, IDbConnection connection = null, IDbTransaction transaction = null) where TEntity : class { if (reader != null && reader.IsClosed == false && reader.HasRows) { var func = FunctionCache.GetDataReaderToDataEntityFunction <TEntity>(reader, connection, transaction); while (reader.Read()) { yield return(func(reader)); } } }
/// <summary> /// Converts the <see cref="DbDataReader"/> into an enumerable of data entity object in an asynchronous way. /// </summary> /// <typeparam name="TEntity">The data entity type to convert.</typeparam> /// <param name="reader">The <see cref="DbDataReader"/> to be converted.</param> /// <param name="connection">The used <see cref="IDbConnection"/> object.</param> /// <param name="basedOnFields">Check whether to create a delegate based on the data reader fields.</param> /// <returns>An array of data entity objects.</returns> internal static async Task <IEnumerable <TEntity> > ToEnumerableAsync <TEntity>(DbDataReader reader, IDbConnection connection, bool basedOnFields) where TEntity : class { var list = new List <TEntity>(); if (reader != null && reader.IsClosed == false && reader.HasRows) { var func = FunctionCache.GetDataReaderToDataEntityFunction <TEntity>(reader, connection, basedOnFields); while (await reader.ReadAsync()) { list.Add(func(reader)); } } return(list); }
/// <summary> /// Converts the <see cref="DbDataReader"/> into an enumerable of data entity object in an asynchronous way. /// </summary> /// <typeparam name="TEntity">The data entity type to convert.</typeparam> /// <param name="reader">The <see cref="DbDataReader"/> to be converted.</param> /// <param name="connection">The used <see cref="IDbConnection"/> object.</param> /// <param name="connectionString">The raw connection string.</param> /// <param name="transaction">The transaction object that is currently in used.</param> /// <param name="enableValidation">Enables the validation after retrieving the database fields.</param> /// <returns>An array of data entity objects.</returns> internal static async Task <IEnumerable <TEntity> > ToEnumerableInternalAsync <TEntity>(DbDataReader reader, IDbConnection connection = null, string connectionString = null, IDbTransaction transaction = null, bool enableValidation = true) where TEntity : class { var list = new List <TEntity>(); if (reader != null && reader.IsClosed == false && reader.HasRows) { var func = FunctionCache.GetDataReaderToDataEntityFunction <TEntity>(reader, connection, connectionString, transaction, enableValidation); while (await reader.ReadAsync()) { list.Add(func(reader)); } } return(list); }