示例#1
0
 public static IEnumerable <TEntity> Select <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, OrderbyClauseResult orderbyClause)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (queryStore == null)
     {
         throw new ArgumentNullException(nameof(queryStore));
     }
     return(queryStore.Select(conn, null, WhereClauseResult.Null, orderbyClause, null));
 }
 public static Task <IEnumerable <TEntity> > TakeAsync <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, int take, IEnumerable <Expression <Func <TEntity, object> > > selectFields, WhereClauseResult whereClause, OrderbyClauseResult orderbyClause, IDbTransaction tr)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (queryStore == null)
     {
         throw new ArgumentNullException(nameof(queryStore));
     }
     return(queryStore.TakeAsync(conn, take, selectFields, whereClause, orderbyClause, tr, default(CancellationToken)));
 }
示例#3
0
 public CommandTextEventInfo ConstructTakeSql <TKey, TEntity>(IList <Expression <Func <TEntity, object> > > logicFields, int take, IEnumerable <Expression <Func <TEntity, object> > > selectFields, WhereClauseResult whereClause, OrderbyClauseResult orderbyClause) where TKey : IEquatable <TKey> where TEntity : class, IEntity <TKey>
 {
     throw new NotImplementedException();
 }
示例#4
0
 public static Task <TEntity> FirstOrDefaultAsync <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, IEnumerable <Expression <Func <TEntity, object> > > selectFields, WhereClauseResult whereClause, OrderbyClauseResult orderbyClause, CancellationToken cancellationToken)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (queryStore == null)
     {
         throw new ArgumentNullException(nameof(queryStore));
     }
     return(queryStore.FirstOrDefaultAsync(conn, selectFields, whereClause, orderbyClause, null, cancellationToken));
 }
 public static Task <IEnumerable <TEntity> > TakeAsync <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, int take, WhereClauseResult whereClause, OrderbyClauseResult orderbyClause, CancellationToken cancellationToken)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (queryStore == null)
     {
         throw new ArgumentNullException(nameof(queryStore));
     }
     return(queryStore.TakeAsync(conn, take, null, whereClause, orderbyClause, null, cancellationToken));
 }
示例#6
0
        public CommandTextEventInfo ConstructTakeSql <TKey, TEntity>(IList <Expression <Func <TEntity, object> > > logicFields, int take, IEnumerable <Expression <Func <TEntity, object> > > selectFields, WhereClauseResult whereClause, OrderbyClauseResult orderbyClause) where TKey : IEquatable <TKey> where TEntity : class, IEntity <TKey>
        {
            var writer     = new StringTextWriter();
            var dynParms   = new DynamicParameters();
            var entityType = typeof(TEntity);
            var tableName  = _dialectSettings.GetEscapeName(entityType);

            var tp = entityType.GetRuntimeProperties().Where(p => p.PropertyType.IsSimpleType());

            if (logicFields != null)
            {
                tp = tp.Where(p => !logicFields.Any(exp => string.Equals(p.Name, exp.GetMemberName(), StringComparison.Ordinal)));
            }
            if (selectFields != null)
            {
                tp = tp.Where(p => selectFields.Any(exp => string.Equals(p.Name, exp.GetMemberName(), StringComparison.Ordinal)));
            }

            writer.Write($"SELECT TOP({take}) {string.Join(", ", tp.Select(p => _dialectSettings.GetEscapeName(p)))} FROM {tableName} ");
            if (whereClause != null)
            {
                writer.Write($"WHERE ({whereClause}) ");
                dynParms.AdddWhereClause(whereClause);
            }
            if (!orderbyClause.IsNull)
            {
                writer.Write($"ORDER BY {orderbyClause} ");
            }
            writer.Write(";");

            return(new CommandTextEventInfo(writer.ToStringWithClear(), dynParms));
        }
示例#7
0
 public static Task <TEntity> FirstOrDefaultAsync <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, WhereClauseResult whereClause, OrderbyClauseResult orderbyClause, IDbTransaction tr, CancellationToken cancellationToken)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (queryStore == null)
     {
         throw new ArgumentNullException(nameof(queryStore));
     }
     return(queryStore.FirstOrDefaultAsync(conn, null, whereClause, orderbyClause, tr, cancellationToken));
 }
示例#8
0
 public static IPageResult <TEntity> Page <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, int skip, int take, WhereClauseResult whereClause, OrderbyClauseResult orderbyClause)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (queryStore == null)
     {
         throw new ArgumentNullException(nameof(queryStore));
     }
     return(queryStore.Page(conn, skip, take, null, whereClause, orderbyClause, null));
 }
 public static IEnumerable <TEntity> Take <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, int take, IEnumerable <Expression <Func <TEntity, object> > > selectFields, WhereClauseResult whereClause, OrderbyClauseResult orderbyClause)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (queryStore == null)
     {
         throw new ArgumentNullException(nameof(queryStore));
     }
     return(queryStore.Take(conn, take, selectFields, whereClause, orderbyClause, null));
 }
 protected CommandTextEventInfo ConstructTakeSql(int take, IEnumerable <Expression <Func <TEntity, object> > > selectFields, WhereClauseResult whereClause, OrderbyClauseResult orderbyClause)
 => ConstructService.ConstructTakeSql <TKey, TEntity>(LogicFields, take, selectFields, whereClause, orderbyClause);
示例#11
0
        public async Task <IEnumerable <TEntity> > TakeAsync(IStorageDbConnection conn, int take, IEnumerable <Expression <Func <TEntity, object> > > selectFields, WhereClauseResult whereClause, OrderbyClauseResult orderbyClause, IDbTransaction tr, CancellationToken cancellationToken)
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }

            var result = ConstructTakeSql(take, selectFields, whereClause, orderbyClause.IsNull ? CreateDefaultOrderbyClause() : orderbyClause);

            conn.TextWriter.WriteSql(result.CommandText);
            var cmd = CreateDapperCmd(result.CommandText, result.Parameters, tr, cancellationToken);

            return((await conn.QueryAsync <TEntity>(cmd)).AsList());
        }
        public IEnumerable <TEntity> Take(IStorageDbConnection conn, int take, IEnumerable <Expression <Func <TEntity, object> > > selectFields, WhereClauseResult whereClause, OrderbyClauseResult orderbyClause, IDbTransaction tr)
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }

            var result = ConstructTakeSql(take, selectFields, whereClause, orderbyClause.IsNull ? CreateDefaultOrderbyClause() : orderbyClause);

            conn.TextWriter.WriteSql(result.CommandText);
            return(conn.Query <TEntity>(result.CommandText, result.Parameters, tr).AsList());
        }
示例#13
0
 public static Task <IEnumerable <TEntity> > SelectAsync <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, OrderbyClauseResult orderbyClause, IDbTransaction tr)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (queryStore == null)
     {
         throw new ArgumentNullException(nameof(queryStore));
     }
     return(queryStore.SelectAsync(conn, null, WhereClauseResult.Null, orderbyClause, tr, default(CancellationToken)));
 }
 public static Task <IPageResult <TEntity> > PageAsync <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, int skip, int take, OrderbyClauseResult orderbyClause)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (queryStore == null)
     {
         throw new ArgumentNullException(nameof(queryStore));
     }
     return(queryStore.PageAsync(conn, skip, take, null, WhereClauseResult.Null, orderbyClause, null, default(CancellationToken)));
 }
示例#15
0
 public static IEnumerable <TEntity> Select <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, IEnumerable <Expression <Func <TEntity, object> > > selectFields, OrderbyClauseResult orderbyClause, IDbTransaction tr)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (queryStore == null)
     {
         throw new ArgumentNullException(nameof(queryStore));
     }
     return(queryStore.Select(conn, selectFields, WhereClauseResult.Null, orderbyClause, tr));
 }
 public static IEnumerable <TEntity> Take <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, int take, OrderbyClauseResult orderbyClause, IDbTransaction tr)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (queryStore == null)
     {
         throw new ArgumentNullException(nameof(queryStore));
     }
     return(queryStore.Take(conn, take, null, WhereClauseResult.Null, orderbyClause, tr));
 }
示例#17
0
        public async Task <IPageResult <TEntity> > PageAsync(IStorageDbConnection conn, int skip, int take, IEnumerable <Expression <Func <TEntity, object> > > selectFields, WhereClauseResult whereClause, OrderbyClauseResult orderbyClause, IDbTransaction tr, CancellationToken cancellationToken)
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }

            if (skip < 0)
            {
                skip = 0;
            }

            var result = ConstructPageSql(skip, take, selectFields, whereClause, orderbyClause.IsNull ? CreateDefaultOrderbyClause() : orderbyClause);

            conn.TextWriter.WriteSql(result.CommandText);
            var cmd        = CreateDapperCmd(result.CommandText, result.Parameters, tr, cancellationToken);
            var gridReader = await conn.QueryMultipleAsync(cmd);

            var totalNumberOfRecords = (long)Convert.ChangeType(await gridReader.ReadSingleAsync(typeof(long)), typeof(long), CultureInfo.InvariantCulture);
            var list = (await gridReader.ReadAsync <TEntity>()).AsList();

            return(new PageResult <TEntity>(skip, take, totalNumberOfRecords, list));
        }
示例#18
0
        public CommandTextEventInfo ConstructPageSql <TKey, TEntity>(IList <Expression <Func <TEntity, object> > > logicFields, int skip, int take, IEnumerable <Expression <Func <TEntity, object> > > selectFields, WhereClauseResult whereClause, OrderbyClauseResult orderbyClause) where TKey : IEquatable <TKey> where TEntity : class, IEntity <TKey>
        {
            var writer     = new StringTextWriter();
            var dynParms   = new DynamicParameters();
            var entityType = typeof(TEntity);
            var tableName  = _dialectSettings.GetEscapeName(entityType);

            var tp = entityType.GetRuntimeProperties().Where(p => p.PropertyType.IsSimpleType());

            if (logicFields != null)
            {
                tp = tp.Where(p => !logicFields.Any(exp => string.Equals(p.Name, exp.GetMemberName(), StringComparison.Ordinal)));
            }
            if (selectFields != null)
            {
                tp = tp.Where(p => selectFields.Any(exp => string.Equals(p.Name, exp.GetMemberName(), StringComparison.Ordinal)));
            }

            // _TotalNumberOfRecords
            writer.Write($"SELECT COUNT(1) AS _TotalNumberOfRecords FROM {tableName} ");
            if (whereClause != null)
            {
                writer.Write($"WHERE ({whereClause})");
            }
            writer.Write("; ");
            // PagedResult
            var propeerties = tp.ToList();

            writer.Write($"SELECT {string.Join(", ", propeerties.Select(p => $"PagedResult.{_dialectSettings.GetEscapeName(p)}"))} FROM (");
            writer.Write($"SELECT TOP({skip + take}) ROW_NUMBER() OVER(ORDER BY {orderbyClause}) AS _PagedNumber, {string.Join(", ", propeerties.Select(p => _dialectSettings.GetEscapeName(p)))} FROM {tableName}");
            if (whereClause != null)
            {
                writer.Write($" WHERE ({whereClause})");
                dynParms.AdddWhereClause(whereClause);
            }
            writer.Write($") AS PagedResult WHERE (PagedResult._PagedNumber > {skip}) ");
            writer.Write(";");

            return(new CommandTextEventInfo(writer.ToStringWithClear(), dynParms));
        }