示例#1
0
        public TEntity Insert(IStorageDbConnection conn, TEntity entityToInsert, IEnumerable <Expression <Func <TEntity, object> > > ignoredFields, AutoIncrementTransformer <TKey, TEntity> atf, IDbTransaction tr)
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }
            if (entityToInsert == null)
            {
                throw new ArgumentNullException(nameof(entityToInsert));
            }

            var result = ConstructInsertSql(entityToInsert, ignoredFields, atf != null);

            conn.TextWriter.WriteSql(result.CommandText);

            if (atf == null)
            {
                conn.Execute(result.CommandText, result.Parameters, tr);
            }
            else
            {
                var id = (TKey)Convert.ChangeType(conn.QuerySingle(typeof(TKey), result.CommandText, result.Parameters, tr), typeof(TKey), CultureInfo.InvariantCulture);
                atf(id, entityToInsert);
            }

            return(entityToInsert);
        }
        public async Task <TEntity> InsertAsync(IStorageDbConnection conn, TEntity entityToInsert, IEnumerable <Expression <Func <TEntity, object> > > ignoredFields, AutoIncrementTransformer <TKey, TEntity> atf, IDbTransaction tr, CancellationToken cancellationToken)
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }
            if (entityToInsert == null)
            {
                throw new ArgumentNullException(nameof(entityToInsert));
            }

            var result = ConstructInsertSql(entityToInsert, ignoredFields, atf != null);

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

            if (atf == null)
            {
                await conn.ExecuteAsync(cmd);
            }
            else
            {
                var id = (TKey)Convert.ChangeType(await conn.QuerySingleAsync(typeof(TKey), cmd), typeof(TKey), CultureInfo.InvariantCulture);
                atf(id, entityToInsert);
            }

            return(entityToInsert);
        }
        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());
        }
示例#4
0
        public bool Exists(IStorageDbConnection conn, WhereClauseResult whereClause, IDbTransaction tr)
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }

            var result = ConstructExistsSql(whereClause);

            conn.TextWriter.WriteSql(result.CommandText);
            return((bool)Convert.ChangeType(conn.QuerySingle(typeof(int), result.CommandText, result.Parameters, tr), typeof(bool), CultureInfo.InvariantCulture));
        }
示例#5
0
        public long Count(IStorageDbConnection conn, Expression <Func <TEntity, object> > member, WhereClauseResult whereClause, IDbTransaction tr)
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }

            var result = ConstructCountSql(member, whereClause);

            conn.TextWriter.WriteSql(result.CommandText);
            return((long)Convert.ChangeType(conn.QuerySingle(typeof(long), result.CommandText, result.Parameters, tr), typeof(long), CultureInfo.InvariantCulture));
        }
        public async Task <long> CountAsync(IStorageDbConnection conn, Expression <Func <TEntity, object> > member, WhereClauseResult whereClause, IDbTransaction tr, CancellationToken cancellationToken)
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }

            var result = ConstructCountSql(member, whereClause);

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

            return((long)Convert.ChangeType(await conn.QuerySingleAsync(typeof(long), cmd), typeof(long), CultureInfo.InvariantCulture));
        }
示例#7
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 async Task <bool> ExistsAsync(IStorageDbConnection conn, WhereClauseResult whereClause, IDbTransaction tr, CancellationToken cancellationToken)
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }

            var result = ConstructExistsSql(whereClause);

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

            return((bool)Convert.ChangeType(await conn.QuerySingleAsync(typeof(int), cmd), typeof(bool), CultureInfo.InvariantCulture));
        }
        public void Delete(IStorageDbConnection conn, WhereClauseResult whereClause, IDbTransaction tr)
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }
            if (whereClause == null)
            {
                throw new ArgumentNullException(nameof(whereClause));
            }

            var result = ConstructDeleteSql(whereClause);

            conn.TextWriter.WriteSql(result.CommandText);
            conn.Execute(result.CommandText, result.Parameters, tr);
        }
示例#10
0
        public void Update(IStorageDbConnection conn, TEntity entityToUpdate, IEnumerable <Expression <Func <TEntity, object> > > updateFields, WhereClauseResult whereClause, IDbTransaction tr)
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }
            if (entityToUpdate == null)
            {
                throw new ArgumentNullException(nameof(entityToUpdate));
            }

            var result = ConstructUpdateSql(entityToUpdate, updateFields, whereClause);

            conn.TextWriter.WriteSql(result.CommandText);
            conn.Execute(result.CommandText, result.Parameters, tr);
        }
        public void Delete(IStorageDbConnection conn, Expression <Func <TEntity, object> > id, TKey value, IDbTransaction tr)
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }
            if (id == null)
            {
                throw new ArgumentNullException(nameof(id));
            }

            var result = ConstructDeleteSql(id, value);

            conn.TextWriter.WriteSql(result.CommandText);
            conn.Execute(result.CommandText, result.Parameters, tr);
        }
示例#12
0
        public TEntity SingleOrDefault(IStorageDbConnection conn, IEnumerable <Expression <Func <TEntity, object> > > selectFields, Expression <Func <TEntity, object> > id, TKey value, IDbTransaction tr)
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }
            if (id == null)
            {
                throw new ArgumentNullException(nameof(id));
            }

            var result = ConstructSingleSql(selectFields, id, value);

            conn.TextWriter.WriteSql(result.CommandText);
            return(conn.Query <TEntity>(result.CommandText, result.Parameters, tr).SingleOrDefault());
        }
        public async Task DeleteAsync(IStorageDbConnection conn, Expression <Func <TEntity, object> > id, TKey value, IDbTransaction tr, CancellationToken cancellationToken)
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }
            if (id == null)
            {
                throw new ArgumentNullException(nameof(id));
            }

            var result = ConstructDeleteSql(id, value);

            conn.TextWriter.WriteSql(result.CommandText);
            var cmd = CreateDapperCmd(result.CommandText, result.Parameters, tr, cancellationToken);
            await conn.ExecuteAsync(cmd);
        }
示例#14
0
        public async Task UpdateAsync(IStorageDbConnection conn, TEntity entityToUpdate, IEnumerable <Expression <Func <TEntity, object> > > updateFields, WhereClauseResult whereClause, IDbTransaction tr, CancellationToken cancellationToken)
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }
            if (entityToUpdate == null)
            {
                throw new ArgumentNullException(nameof(entityToUpdate));
            }

            var result = ConstructUpdateSql(entityToUpdate, updateFields, whereClause);

            conn.TextWriter.WriteSql(result.CommandText);
            var cmd = CreateDapperCmd(result.CommandText, result.Parameters, tr, cancellationToken);
            await conn.ExecuteAsync(cmd);
        }
        public async Task DeleteAsync(IStorageDbConnection conn, WhereClauseResult whereClause, IDbTransaction tr, CancellationToken cancellationToken)
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }
            if (whereClause == null)
            {
                throw new ArgumentNullException(nameof(whereClause));
            }

            var result = ConstructDeleteSql(whereClause);

            conn.TextWriter.WriteSql(result.CommandText);
            var cmd = CreateDapperCmd(result.CommandText, result.Parameters, tr, cancellationToken);
            await conn.ExecuteAsync(cmd);
        }
        public async Task <TEntity> SingleOrDefaultAsync(IStorageDbConnection conn, IEnumerable <Expression <Func <TEntity, object> > > selectFields, Expression <Func <TEntity, object> > id, TKey value, IDbTransaction tr, CancellationToken cancellationToken)
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }
            if (id == null)
            {
                throw new ArgumentNullException(nameof(id));
            }

            var result = ConstructSingleSql(selectFields, id, value);

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

            return((await conn.QueryAsync <TEntity>(cmd)).SingleOrDefault());
        }
        public IPageResult <TEntity> Page(IStorageDbConnection conn, int skip, int take, IEnumerable <Expression <Func <TEntity, object> > > selectFields, WhereClauseResult whereClause, OrderbyClauseResult orderbyClause, IDbTransaction tr)
        {
            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 gridReader           = conn.QueryMultiple(result.CommandText, result.Parameters, tr);
            var totalNumberOfRecords = (long)Convert.ChangeType(gridReader.ReadSingle(typeof(long)), typeof(long), CultureInfo.InvariantCulture);
            var list = gridReader.Read <TEntity>().AsList();

            return(new PageResult <TEntity>(skip, take, totalNumberOfRecords, list));
        }
 public static Task UpdateAsync <TKey, TEntity>(this IUpdateStore <TKey, TEntity> updateStore, IStorageDbConnection conn, TEntity entityToUpdate, Expression <Func <TEntity, object> > id, TKey value)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (updateStore == null)
     {
         throw new ArgumentNullException(nameof(updateStore));
     }
     return(updateStore.UpdateAsync(conn, entityToUpdate, null, id, value, null, default(CancellationToken)));
 }
示例#19
0
 public static Task DeleteAsync <TKey, TEntity>(this IDeleteStore <TKey, TEntity> deleteStore, IStorageDbConnection conn, WhereClauseResult whereClause, IDbTransaction tr)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (deleteStore == null)
     {
         throw new ArgumentNullException(nameof(deleteStore));
     }
     return(deleteStore.DeleteAsync(conn, whereClause, tr, default(CancellationToken)));
 }
示例#20
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));
 }
示例#21
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, IDbTransaction tr, CancellationToken cancellationToken)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (queryStore == null)
     {
         throw new ArgumentNullException(nameof(queryStore));
     }
     return(queryStore.TakeAsync(conn, take, selectFields, WhereClauseResult.Null, OrderbyClauseResult.Null, tr, cancellationToken));
 }
 public static Task <TEntity> SingleOrDefaultAsync <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, TKey value, CancellationToken cancellationToken)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (queryStore == null)
     {
         throw new ArgumentNullException(nameof(queryStore));
     }
     return(queryStore.SingleOrDefaultAsync(conn, null, _ => _.Id, value, null, cancellationToken));
 }
 public static Task <TEntity> SingleOrDefaultAsync <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, IEnumerable <Expression <Func <TEntity, object> > > selectFields, TKey value)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (queryStore == null)
     {
         throw new ArgumentNullException(nameof(queryStore));
     }
     return(queryStore.SingleOrDefaultAsync(conn, selectFields, _ => _.Id, value, null, default(CancellationToken)));
 }
示例#25
0
 public static Task <TEntity> FirstOrDefaultAsync <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, IEnumerable <Expression <Func <TEntity, object> > > selectFields)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (queryStore == null)
     {
         throw new ArgumentNullException(nameof(queryStore));
     }
     return(queryStore.FirstOrDefaultAsync(conn, selectFields, WhereClauseResult.Null, OrderbyClauseResult.Null, null, default(CancellationToken)));
 }
 public static Task UpdateAsync <TKey, TEntity>(this IUpdateStore <TKey, TEntity> updateStore, IStorageDbConnection conn, TEntity entityToUpdate, TKey value, IDbTransaction tr)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (updateStore == null)
     {
         throw new ArgumentNullException(nameof(updateStore));
     }
     return(updateStore.UpdateAsync(conn, entityToUpdate, null, _ => _.Id, value, tr, default(CancellationToken)));
 }
 public static Task UpdateAsync <TKey, TEntity>(this IUpdateStore <TKey, TEntity> updateStore, IStorageDbConnection conn, TEntity entityToUpdate, IEnumerable <Expression <Func <TEntity, object> > > updateFields, TKey value, IDbTransaction tr, CancellationToken cancellationToken)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (updateStore == null)
     {
         throw new ArgumentNullException(nameof(updateStore));
     }
     return(updateStore.UpdateAsync(conn, entityToUpdate, updateFields, _ => _.Id, value, tr, cancellationToken));
 }
 public static Task <TEntity> SingleOrDefaultAsync <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, Expression <Func <TEntity, object> > id, TKey value, IDbTransaction tr, CancellationToken cancellationToken)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (queryStore == null)
     {
         throw new ArgumentNullException(nameof(queryStore));
     }
     return(queryStore.SingleOrDefaultAsync(conn, null, id, value, tr, cancellationToken));
 }
示例#29
0
 public static Task <TEntity> FirstOrDefaultAsync <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, 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, WhereClauseResult.Null, OrderbyClauseResult.Null, tr, cancellationToken));
 }
 public static Task <IEnumerable <TEntity> > TakeAsync <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, int take, 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, null, whereClause, orderbyClause, tr, default(CancellationToken)));
 }