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