/// <summary>An OrmConnection method that selects.</summary>
        /// <typeparam name="T">Generic type parameter.</typeparam>
        /// <param name="expression">The expression.</param>
        /// <param name="flags"></param>
        /// <returns>A List&lt;T&gt;</returns>
        public async Task <IEnumerable <T> > SelectAsync <T>(Action <TypedSelectStatement <T> > expression, CommandFlags flags = CommandFlags.Buffered)
        {
            TypedSelectStatement <T> select = new TypedSelectStatement <T>(DialectProvider);

            expression(select);
            return(await this.QueryAsync <T>(DialectProvider.ToSelectStatement(select.Statement, flags)));
        }
        /// <summary>An OrmConnection method that selects.</summary>
        /// <typeparam name="T">Generic type parameter.</typeparam>
        /// <param name="predicate">The predicate.</param>
        /// <param name="flags"></param>
        /// <returns>A List&lt;T&gt;</returns>
        public async Task <IEnumerable <T> > SelectAsync <T>(Expression <Func <T, bool> > predicate, CommandFlags flags = CommandFlags.Buffered)
        {
            TypedSelectStatement <T> select = new TypedSelectStatement <T>(DialectProvider);

            select.Where(predicate);
            return(await this.QueryAsync <T>(DialectProvider.ToSelectStatement(select.Statement, flags)));
        }
        /// <summary>
        /// Execute a query that return a single value
        /// </summary>
        /// <example>
        ///     int maxAgeUnder50 = db.Scalar<Person, int>(x => Sql.Max(x.Age));
        /// </example>
        /// <param name="field">The expression that return the single value</param>
        /// <typeparam name="T">The Type specifying the target table</typeparam>
        /// <typeparam name="TKey">The Type of the result</typeparam>
        /// <returns></returns>
        public async Task <TKey> GetScalarAsync <T, TKey>(Expression <Func <T, TKey> > field)
        {
            var select = new TypedSelectStatement <T>(DialectProvider);

            select.Select(field);
            return(await this.ExecuteScalarAsync <TKey>(
                       DialectProvider.ToSelectStatement(select.Statement, CommandFlags.None)));
        }
        public async Task <long> CountAsync <T>(Action <TypedSelectStatement <T> > expression)
        {
            TypedSelectStatement <T> select = new TypedSelectStatement <T>(DialectProvider);

            expression(select);

            return(await this.ExecuteScalarAsync <long>(DialectProvider.ToCountStatement(select.Statement, CommandFlags.None)));
        }
        /// <summary>An OrmConnection method that gets a scalar.</summary>
        /// <typeparam name="T">   Generic type parameter.</typeparam>
        /// <typeparam name="TKey">Type of the key.</typeparam>
        /// <param name="field"> The field.</param>
        /// <returns>The scalar.</returns>
        public async Task <TKey> GetScalarAsync <T, TKey>(Expression <Func <T, TKey> > field)
        {
            //int maxAgeUnder50 = db.Scalar<Person, int>(x => Sql.Max(x.Age));
            TypedSelectStatement <T> select = new TypedSelectStatement <T>(DialectProvider);

            select.Select(field);
            return(await this.ExecuteScalarAsync <TKey>(DialectProvider.ToSelectStatement(select.Statement, CommandFlags.None)));
        }
Exemple #6
0
        public void Can_select_count_with_where_Statement()
        {
            CreateModelWithFieldsOfDifferentTypes();
            using (var conn = OpenDbConnection())
            {
                var v = new TypedSelectStatement <ModelWithFieldsOfDifferentTypes>(_connectionFactory.DialectProvider);
                v.Where(x => x.Bool);

                var select = _connectionFactory.DialectProvider.ToSelectStatement(v.Statement, CommandFlags.None);

                Assert.AreEqual(5, conn.Count <ModelWithFieldsOfDifferentTypes>(x => { x.Where(q => q.Bool); }));
            }
        }