/// <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);
        }
Esempio n. 3
0
        /// <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));
        }
Esempio n. 4
0
        /// <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));
        }