/// <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();
/// <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)); }