Exemplo n.º 1
0
 /// <summary>
 /// Converts the <see cref="DbDataReader"/> into an enumerable of dynamic objects.
 /// </summary>
 /// <param name="reader">The <see cref="DbDataReader"/> to be converted.</param>
 /// <param name="dbFields">The list of the <see cref="DbField"/> objects to be used.</param>
 /// <param name="dbSetting">The instance of <see cref="IDbSetting"/> object to be used.</param>
 /// <returns>An array of dynamic objects.</returns>
 public static IEnumerable <dynamic> ToEnumerable(DbDataReader reader,
                                                  IEnumerable <DbField> dbFields = null,
                                                  IDbSetting dbSetting           = null)
 {
     if (reader?.IsClosed == false && reader.HasRows)
     {
         var func = FunctionCache.GetDataReaderToExpandoObjectCompileFunction(reader,
                                                                              dbFields,
                                                                              dbSetting);
         while (reader.Read())
         {
             yield return(func(reader));
         }
     }
 }
Exemplo n.º 2
0
 /// <summary>
 /// Converts the <see cref="DbDataReader"/> into an enumerable of <see cref="ExpandoObject"/> objects.
 /// </summary>
 /// <param name="reader">The <see cref="DbDataReader"/> to be converted.</param>
 /// <param name="tableName">The name of the target table.</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 <see cref="ExpandoObject"/> objects.</returns>
 internal static IEnumerable <dynamic> ToEnumerable(DbDataReader reader,
                                                    string tableName,
                                                    IDbConnection connection,
                                                    IDbTransaction transaction)
 {
     if (reader != null && reader.HasRows)
     {
         var func = FunctionCache.GetDataReaderToExpandoObjectCompileFunction(reader,
                                                                              tableName,
                                                                              connection,
                                                                              transaction);
         while (reader.Read())
         {
             yield return(func(reader));
         }
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// Converts the <see cref="DbDataReader"/> into an enumerable of dynamic objects.
        /// </summary>
        /// <param name="reader">The <see cref="DbDataReader"/> to be converted.</param>
        /// <param name="dbFields">The list of the <see cref="DbField"/> objects to be used.</param>
        /// <param name="dbSetting">The instance of <see cref="IDbSetting"/> object to be used.</param>
        /// <param name="cancellationToken">The <see cref="CancellationToken"/> object to be used during the asynchronous operation.</param>
        /// <returns>An array of dynamic objects.</returns>
        public static async IAsyncEnumerable <dynamic> ToEnumerableAsync(DbDataReader reader,
                                                                         IEnumerable <DbField> dbFields = null,
                                                                         IDbSetting dbSetting           = null,
                                                                         [EnumeratorCancellation] CancellationToken cancellationToken = default)
        {
            if (reader?.IsClosed != false || !reader.HasRows)
            {
                yield break;
            }

            var func = FunctionCache.GetDataReaderToExpandoObjectCompileFunction(reader,
                                                                                 dbFields,
                                                                                 dbSetting);

            while (await reader.ReadAsync(cancellationToken))
            {
                yield return(func(reader));
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Converts the <see cref="DbDataReader"/> into an enumerable of dynamic objects.
        /// </summary>
        /// <param name="reader">The <see cref="DbDataReader"/> to be converted.</param>
        /// <param name="dbFields">The list of the <see cref="DbField"/> objects to be used.</param>
        /// <param name="dbSetting">The instance of <see cref="IDbSetting"/> object to be used.</param>
        /// <param name="cancellationToken">The <see cref="CancellationToken"/> object to be used during the asynchronous operation.</param>
        /// <returns>An array of dynamic objects.</returns>
        public static async Task <IEnumerable <dynamic> > ToEnumerableAsync(DbDataReader reader,
                                                                            IEnumerable <DbField> dbFields      = null,
                                                                            IDbSetting dbSetting                = null,
                                                                            CancellationToken cancellationToken = default)
        {
            var list = new List <dynamic>();

            if (reader != null && reader.IsClosed == false && reader.HasRows)
            {
                var func = FunctionCache.GetDataReaderToExpandoObjectCompileFunction(reader,
                                                                                     dbFields,
                                                                                     dbSetting);
                while (await reader.ReadAsync(cancellationToken))
                {
                    list.Add(func(reader));
                }
            }
            return(list);
        }