/// <summary>
        ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
        ///     directly from your code. This API may change or be removed in future releases.
        /// </summary>
        public EntityQueryable([NotNull] IAsyncQueryProvider queryProvider, [NotNull] IParameterizedQuery definingParameterizedQuery, [NotNull] object definingParameter)
        {
            Check.NotNull(queryProvider, nameof(queryProvider));
            Check.NotNull(definingParameterizedQuery, nameof(definingParameterizedQuery));
            Check.NotNull(definingParameter, nameof(definingParameter));

            DefiningParameterizedQuery = definingParameterizedQuery;
            DefiningParameter          = definingParameter;
        }
        /// <summary>
        /// Returns a value from the first row of the first column in the query result.
        /// </summary>
        /// <typeparam name="T">Type of the scalar</typeparam>
        /// <param name="query">SQL query with parameters</param>
        /// <returns>Scalar value</returns>
        public T GetScalar <T>(IParameterizedQuery query)
        {
            LogQuery(query);

            string queryText = TranslateQueryParameters(query.QueryText);

            using (DbConnection db = GetConnection())
            {
                DbCommand command = GetCommand(db);
                command.CommandText = queryText;

                foreach (ISqlParameter param in query.SqlParameters)
                {
                    System.Data.Common.DbParameter dbParam = command.CreateParameter();
                    dbParam.ParameterName = param.Name;
                    dbParam.Value         = param.Value;
                    command.Parameters.Add(dbParam);
                }

                return((T)command.ExecuteScalar());
            }
        }
        /// <summary>
        /// Returns a result enumeration from given parameterized query into a list of a given DTO.
        /// </summary>
        /// <typeparam name="T">Type of the DTO</typeparam>
        /// <param name="query">Parameterized query</param>
        /// <returns>DTO enumeration</returns>
        public IEnumerable <T> GetResult <T>(IParameterizedQuery query) where T : new()
        {
            LogQuery(query);

            string queryText = TranslateQueryParameters(query.QueryText);

            using (DbConnection db = GetConnection())
            {
                DbCommand command = GetCommand(db);
                command.CommandText = queryText;

                foreach (ISqlParameter param in query.SqlParameters)
                {
                    System.Data.Common.DbParameter dbParam = command.CreateParameter();
                    dbParam.ParameterName = param.Name;
                    dbParam.Value         = param.Value;
                    command.Parameters.Add(dbParam);
                }

                IDataReader dataReader = command.ExecuteReader();
                return(mapper.MapToDto <T>(dataReader, DatabaseType));
            }
        }
        /// <summary>
        /// Returns a result as a RDBMS-specific <see cref="DataSet"/> for a parameterized query.
        /// Individual parameters, in present, are converted into the relevant RDMBS-specific <see cref="DbParameter"/>.
        /// </summary>
        /// <param name="query">SQL query</param>
        /// <returns>RDBMS-specific <see cref="DataSet"/>.</returns>
        public DataSet GetDataTable(IParameterizedQuery query)
        {
            LogQuery(query);

            string queryText = TranslateQueryParameters(query.QueryText);

            using (DbConnection db = GetConnection())
            {
                DbCommand command = GetCommand(db);
                command.CommandText = queryText;
                foreach (ISqlParameter param in query.SqlParameters)
                {
                    System.Data.Common.DbParameter dbParam = command.CreateParameter();
                    dbParam.ParameterName = param.Name;
                    dbParam.Value         = param.Value;
                    command.Parameters.Add(dbParam);
                }

                DataAdapter dataAdapter = GetDataAdapterForCommand(command);
                var         dataSet     = new DataSet();
                dataAdapter.Fill(dataSet);
                return(dataSet);
            }
        }
        /// <summary>
        /// Returns number of records for given table identifier. May be RDBMS-specific.
        /// </summary>
        /// <param name="sqlQuery">The SQL QUERY model</param>
        /// <returns>Number of records</returns>
        public virtual int GetTotalRecords(ISqlSelectQuery sqlQuery)
        {
            IParameterizedQuery countQuery = BuildCountQuery(sqlQuery);

            return(GetScalar <int>(countQuery));
        }
 /// <summary>
 /// Returns a single row for a parameterized query.
 /// </summary>
 /// <typeparam name="T">DTO of the row</typeparam>
 /// <param name="parameterizedQuery">Parameterized query</param>
 /// <returns>DTO result</returns>
 public T GetRow <T>(IParameterizedQuery parameterizedQuery) where T : new() => GetResult <T>(parameterizedQuery).FirstOrDefault();
        /// <summary>
        /// Returns number of records for given table identifier. May be RDBMS-specific.
        /// </summary>
        /// <param name="sqlQuery">The SQL QUERY model</param>
        /// <returns>Number of records</returns>
        public virtual async Task <int> GetTotalRecordsAsync(ISqlSelectQuery sqlQuery)
        {
            IParameterizedQuery countQuery = BuildCountQuery(sqlQuery);

            return(await GetScalarAsync <int>(countQuery));
        }
 /// <summary>
 /// Returns a single row for a parameterized query.
 /// </summary>
 /// <typeparam name="T">DTO of the row</typeparam>
 /// <param name="parameterizedQuery">Parameterized query</param>
 /// <returns>DTO result</returns>
 public async Task <T> GetRowAsync <T>(IParameterizedQuery parameterizedQuery) where T : new() => (await GetResultAsync <T>(parameterizedQuery)).FirstOrDefault();
Exemple #9
0
        /// <summary>
        /// Returns a total number of records in a given table.
        /// </summary>
        /// <param name="sqlQuery">SQL SELECT query model</param>
        /// <returns>Number of total records</returns>
        public override int GetTotalRecords(ISqlSelectQuery sqlQuery)
        {
            IParameterizedQuery countQuery = BuildCountQuery(sqlQuery);

            return((int)GetScalar <decimal>(countQuery));
        }