/// <summary> /// Returns rows count from specified table in an asynchronous manner. /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public virtual async Task <int> CountAsync <T>() where T : class { var tableName = AttributeExtension.TableNameAttributeValidate(typeof(T)); var query = $"SELECT COUNT(*) FROM {tableName}"; var count = await this.ExecuteScalarAsync <int>(query).ConfigureAwait(false); return(count); }
/// <summary> /// Returns rows count from specified table. /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public virtual int Count <T>() where T : class { var tableName = AttributeExtension.TableNameAttributeValidate(typeof(T)); var query = $"SELECT COUNT(*) FROM {tableName}"; var count = this.ExecuteScalar <int>(query); return(count); }
/// <summary> /// Returns rows count from specified table. /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public static int Count <T>(this IDatabaseConnector connector) where T : class { var con = connector as DatabaseConnectorBase; if (con == null) { throw new InvalidCastException($"{connector.GetType().FullName} cannot be use with this extension (expected to get instance of {typeof(DatabaseConnectorBase).FullName}"); } var tableName = AttributeExtension.TableNameAttributeValidate(typeof(T)); var query = $"SELECT COUNT(*) FROM {tableName}"; var count = con.ExecuteScalar(query); var countAsString = count.ToString(); return(int.Parse(countAsString)); }
/// <summary> /// Returns rows count on specific condition from specified table. /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public static int Count <T>(this IDatabaseConnector connector, Expression <Func <T, bool> > predicate) where T : class { var con = connector as DatabaseConnectorBase; if (con == null) { throw new InvalidCastException($"{connector.GetType().FullName} cannot be use with this extension (expected to get instance of {typeof(DatabaseConnectorBase).FullName}"); } var tableName = AttributeExtension.TableNameAttributeValidate(typeof(T)); var exprTranslator = new ExpressionTranslator <T>(con.CompatibleFunctionName); var translateResult = exprTranslator.Translate(predicate); var query = $"SELECT COUNT(*) FROM {tableName} WHERE {translateResult.Expression}"; var count = con.ExecuteScalar(query, translateResult.Parameters); var countAsString = count.ToString(); return(int.Parse(countAsString)); }