Example #1
0
        /// <summary>
        /// Executes command and returns results as collection of values, mapped using provided mapping function.
        /// </summary>
        /// <typeparam name="T">Result record type.</typeparam>
        /// <param name="objectReader">Record mapping function from data reader.</param>
        /// <returns>Returns collection of query result records.</returns>
        public IEnumerable <T> Query <T>(Func <IDataReader, T> objectReader)
        {
            DataConnection.InitCommand(CommandType, CommandText, Parameters, null);

            if (Parameters != null && Parameters.Length > 0)
            {
                SetParameters(DataConnection, Parameters);
            }

            return(ReadEnumerator(DataConnection.ExecuteReader(GetCommandBehavior()), objectReader));
        }
Example #2
0
        /// <summary>
        /// Executes command and returns results as collection of values, mapped using provided mapping function.
        /// </summary>
        /// <typeparam name="T">Result record type.</typeparam>
        /// <param name="objectReader">Record mapping function from data reader.</param>
        /// <returns>Returns collection of query result records.</returns>
        public IEnumerable <T> Query <T>(Func <IDataReader, T> objectReader)
        {
            DataConnection.InitCommand(CommandType, CommandText, Parameters, null);

            if (Parameters != null && Parameters.Length > 0)
            {
                SetParameters(DataConnection, Parameters);
            }

            using (var rd = DataConnection.ExecuteReader(GetCommandBehavior()))
                while (rd.Read())
                {
                    yield return(objectReader(rd));
                }
        }
        static T ExecuteScalar <T>(DataConnection connection, string sql)
        {
            using (var rd = connection.ExecuteReader())
            {
                if (rd.Read())
                {
                    var objectReader = GetObjectReader <T>(connection, rd, sql);

#if DEBUG
                    //var value = rd.GetValue(0);
#endif

                    try
                    {
                        return(objectReader(rd));
                    }
                    catch (InvalidCastException)
                    {
                        return(GetObjectReader2 <T>(connection, rd, sql)(rd));
                    }
                }
            }

            return(default(T));
        }
        static IEnumerable <T> ExecuteQuery <T>(DataConnection connection)
        {
            using (var rd = connection.ExecuteReader())
            {
                if (rd.Read())
                {
                    var objectReader = GetObjectReader <T>(connection, rd, connection.Command.CommandText);
                    var isFaulted    = false;

                    do
                    {
                        T result;

                        try
                        {
                            result = objectReader(rd);
                        }
                        catch (InvalidCastException)
                        {
                            if (isFaulted)
                            {
                                throw;
                            }

                            isFaulted    = true;
                            objectReader = GetObjectReader2 <T>(connection, rd, connection.Command.CommandText);
                            result       = objectReader(rd);
                        }

                        yield return(result);
                    } while (rd.Read());
                }
            }
        }
Example #5
0
        public static DataTable LoadDataTable(this DataConnection dc, string sql)
        {
            var dt = new DataTable();

            dt.Load(dc.ExecuteReader(sql).Reader);
            return(dt);
        }
        public static DataReader ExecuteReader(this DataConnection connection, string sql)
        {
            connection.SetCommand(sql);

            return(new DataReader {
                Connection = connection, Reader = connection.ExecuteReader()
            });
        }
        public static DataReader ExecuteReader(this DataConnection connection, string sql, params DataParameter[] parameters)
        {
            connection.SetCommand(sql);

            SetParameters(connection, parameters);

            return(new DataReader {
                Connection = connection, Reader = connection.ExecuteReader()
            });
        }
        public static IEnumerable <T> Query <T>(this DataConnection connection, Func <IDataReader, T> objectReader, string sql)
        {
            connection.SetCommand(sql);

            using (var rd = connection.ExecuteReader())
                while (rd.Read())
                {
                    yield return(objectReader(rd));
                }
        }
        public static IEnumerable <T> QueryProc <T>(this DataConnection connection, Func <IDataReader, T> objectReader, string sql, params DataParameter[] parameters)
        {
            connection.SetCommand(sql);
            connection.Command.CommandType = CommandType.StoredProcedure;

            SetParameters(connection, parameters);

            using (var rd = connection.ExecuteReader())
                while (rd.Read())
                {
                    yield return(objectReader(rd));
                }
        }
        public static IEnumerable <T> Query <T>(this DataConnection connection, Func <IDataReader, T> objectReader, string sql, object parameters)
        {
            connection.SetCommand(sql);

            var dps = GetDataParameters(connection, parameters);

            SetParameters(connection, dps);

            using (var rd = connection.ExecuteReader())
                while (rd.Read())
                {
                    yield return(objectReader(rd));
                }
        }
            public override IDataReader ExecuteReader()
            {
                SetCommand(true);

                _dataConnection.InitCommand(CommandType.Text, _preparedQuery.Commands[0], null, QueryHints);

                if (_preparedQuery.Parameters != null)
                {
                    foreach (var p in _preparedQuery.Parameters)
                    {
                        _dataConnection.Command.Parameters.Add(p);
                    }
                }

                return(_dataConnection.ExecuteReader());
            }
            public static IDataReader ExecuteReader(DataConnection dataConnection, IQueryContext context)
            {
                var preparedQuery = GetCommand(dataConnection, context);

                GetParameters(dataConnection, context, preparedQuery);

                dataConnection.InitCommand(CommandType.Text, preparedQuery.Commands[0], null, preparedQuery.QueryHints);

                if (preparedQuery.Parameters != null)
                {
                    foreach (var p in preparedQuery.Parameters)
                    {
                        dataConnection.Command.Parameters.Add(p);
                    }
                }

                return(dataConnection.ExecuteReader());
            }
Example #13
0
		public void TestDataReader(string context)
		{
			using (var conn   = new DataConnection(context))
			using (var reader = conn.ExecuteReader("SELECT 1; SELECT '2'"))
			{
				var n = reader.Execute<int>();

				Assert.AreEqual(1, n);

				var s = reader.Query<string>();

				Assert.AreEqual("2", s.First());
			}
		}