Пример #1
0
 public static void Update <TKey, TEntity>(this IUpdateStore <TKey, TEntity> updateStore, IStorageDbConnection conn, TEntity entityToUpdate, IEnumerable <Expression <Func <TEntity, object> > > updateFields, WhereClauseResult whereClause)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (updateStore == null)
     {
         throw new ArgumentNullException(nameof(updateStore));
     }
     updateStore.Update(conn, entityToUpdate, updateFields, whereClause, null);
 }
Пример #2
0
 public CommandTextEventInfo ConstructExistsSql(Type entityType, WhereClauseResult whereClause)
 {
     throw new NotImplementedException();
 }
Пример #3
0
 public static IEnumerable <TEntity> Select <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, 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.Select(conn, null, whereClause, orderbyClause, tr));
 }
 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)));
 }
Пример #5
0
 public CommandTextEventInfo ConstructUpdateSql <TKey, TEntity>(IList <Expression <Func <TEntity, object> > > logicFields, TEntity entityToUpdate, IEnumerable <Expression <Func <TEntity, object> > > updateFields, WhereClauseResult whereClause) where TKey : IEquatable <TKey> where TEntity : class, IEntity <TKey>
 {
     throw new NotImplementedException();
 }
Пример #6
0
 public static IEnumerable <TEntity> Take <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, int take, WhereClauseResult whereClause)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (queryStore == null)
     {
         throw new ArgumentNullException(nameof(queryStore));
     }
     return(queryStore.Take(conn, take, null, whereClause, OrderbyClauseResult.Null, null));
 }
Пример #7
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));
 }
Пример #8
0
        public virtual async Task <int> CountAsync(IDbConnection conn, Expression <Func <TEntity, object> > member = null, WhereClauseResult whereClause = null, IDbTransaction tr = null, CancellationToken cctoken = default(CancellationToken))
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }

            var escapeTableName = this._storeMapping.GetEscapeTableName(_classMap.TableName, this._dialectSettings);
            var columnName      = member == null ? "*" : $"{escapeTableName}.{this._storeMapping.GetEscapeColumnName(_classMap.Properties.Get(member.GetMemberName()).ColumnName, this._dialectSettings)}";
            var builder         = new StringBuilder();
            var dynParms        = new DynamicParameters();

            builder.Append($"SELECT COUNT({columnName}) FROM {escapeTableName}{this.Newline}");
            if (whereClause != null)
            {
                builder.Append($"{AppUtility.GetCharString(" ", "SE".Length)}WHERE ({whereClause.WhereClause}){this.Newline}");

                foreach (var item in whereClause.Parameter)
                {
                    dynParms.Add(item.Key, item.Value);
                }
                whereClause.Parameter.Clear();
            }
            builder.Append(";");

            var sql = builder.ToString();

            builder.Clear();

            try
            {
                var cmd = this.BuildDapperCmd(sql, dynParms, tr, cancellationToken: cctoken);
                return(await conn.QuerySingleAsync(cmd));
            }
            catch (Exception ex)
            {
                IDictionary <string, object> parameters = new Dictionary <string, object>();
                foreach (var item in dynParms.ParameterNames)
                {
                    parameters.Insert(item, dynParms.Get <object>(item));
                }

                throw new ExecuteSqlErrorException(sql, parameters, ex.Message, ex);
            }
        }
Пример #9
0
 public virtual IEnumerable <TEntity> Select(IDbConnection conn, WhereClauseResult whereClause = null,
                                             string sqlOrderbyClause = null, IDbTransaction tr = null) => this.Select(conn, null, whereClause,
                                                                                                                      sqlOrderbyClause, tr);
Пример #10
0
 public static IPageResult <TEntity> Page <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, int skip, int take, IEnumerable <Expression <Func <TEntity, object> > > selectFields, WhereClauseResult whereClause, IDbTransaction tr)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (queryStore == null)
     {
         throw new ArgumentNullException(nameof(queryStore));
     }
     return(queryStore.Page(conn, skip, take, selectFields, whereClause, OrderbyClauseResult.Null, tr));
 }
Пример #11
0
 public static bool Exists <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, WhereClauseResult whereClause)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (queryStore == null)
     {
         throw new ArgumentNullException(nameof(queryStore));
     }
     return(queryStore.Exists(conn, whereClause, null));
 }
Пример #12
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());
        }
Пример #13
0
 protected CommandTextEventInfo ConstructCountSql(Expression <Func <TEntity, object> > member, WhereClauseResult whereClause)
 => ConstructService.ConstructCountSql <TKey, TEntity>(member, whereClause);
Пример #14
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));
        }
Пример #15
0
        private (string sql, DynamicParameters dynParms) ConstructUpdateSql(TEntity entity, IEnumerable <Expression <Func <TEntity, object> > > updateFields, WhereClauseResult whereClause)
        {
            DynamicParameters dynParms        = new DynamicParameters();
            StringBuilder     builder         = new StringBuilder();
            string            escapeTableName = this._storeMapping.GetEscapeTableName(_classMap.TableName, this._dialectSettings);

            var propertyMaps = _classMap.Properties.PropertyMaps.Where(p => !p.Ignored && p.CanModified).ToList();

            var updateFieldList = updateFields?.ToList() ?? new List <Expression <Func <TEntity, object> > >();

            if (updateFieldList.Any())
            {
                propertyMaps = propertyMaps
                               .Where(p => updateFieldList.Any(exp => string.Equals(p.Name, exp.GetMemberName(),
                                                                                    StringComparison.CurrentCultureIgnoreCase))).ToList();
            }

            builder.Append($"UPDATE {escapeTableName}{this.Newline}");
            builder.Append($"{AppUtility.GetCharString(" ", "UPD".Length)}SET");

            var index      = 1;
            var charString = AppUtility.GetCharString(" ", "UPDATE".Length);

            foreach (var item in propertyMaps)
            {
                string mn = $"{escapeTableName}.{this._storeMapping.GetEscapeColumnName(item.ColumnName, this._dialectSettings)}";
                string pn = $"{this._dialectSettings.ParameterPrefix}{item.Name}";
                object pv = item.Property.GetValue(entity, null) ?? DBNull.Value;
                dynParms.Add(pn, pv);

                builder.Append(index == 1 ? $" {mn} = {pn}{this.Newline}" : $"{charString},{mn} = {pn}{this.Newline}");

                index++;
            }
            if (whereClause != null)
            {
                builder.Append($"{AppUtility.GetCharString(" ", "U".Length)}WHERE ({whereClause.WhereClause}){this.Newline}");

                foreach (var item in whereClause.Parameter)
                {
                    dynParms.Add(item.Key, item.Value);
                }
                whereClause.Parameter.Clear();
            }
            builder.Append(";");

            string sql = builder.ToString();

            builder.Clear();

            return(sql, dynParms);
        }
Пример #16
0
 public virtual async Task <IEnumerable <TEntity> > SelectAsync(IDbConnection conn, WhereClauseResult whereClause = null, string sqlOrderbyClause = null, IDbTransaction tr = null, CancellationToken cctoken = default(CancellationToken)) => await this.SelectAsync(conn, null, whereClause,
                                                                                                                                                                                                                                                                      sqlOrderbyClause, tr, cctoken);
Пример #17
0
        private (string sql, DynamicParameters dynParms) ConstructSelectSql(IEnumerable <Expression <Func <TEntity, object> > > selectFields, WhereClauseResult whereClause, string sqlOrderbyClause)
        {
            DynamicParameters dynParms        = new DynamicParameters();
            StringBuilder     builder         = new StringBuilder();
            string            escapeTableName = this._storeMapping.GetEscapeTableName(_classMap.TableName, this._dialectSettings);

            var propertyMaps = _classMap.Properties.PropertyMaps.Where(p => !p.Ignored).ToList();

            var selectFieldList = selectFields?.ToList() ?? new List <Expression <Func <TEntity, object> > >();

            if (selectFieldList.Any())
            {
                propertyMaps = propertyMaps.Where(p => selectFieldList.Any(exp => string.Equals(p.Name,
                                                                                                exp.GetMemberName(), StringComparison.CurrentCultureIgnoreCase))).ToList();
            }

            builder.Append("SELECT ");

            int    index      = 1;
            string charString = AppUtility.GetCharString(" ", "SELECT".Length);

            foreach (var item in propertyMaps)
            {
                string mn = $"{escapeTableName}.{this._storeMapping.GetEscapeColumnName(item.ColumnName, this._dialectSettings)}";

                builder.Append(index == 1 ? $"{mn}{this.Newline}" : $"{charString},{mn}{this.Newline}");

                index++;
            }
            builder.Append($"{AppUtility.GetCharString(" ", "SE".Length)}FROM {escapeTableName}{this.Newline}");

            if (whereClause != null)
            {
                builder.Append($"{AppUtility.GetCharString(" ", "SE".Length)}WHERE ({whereClause.WhereClause}){this.Newline}");

                foreach (var item in whereClause.Parameter)
                {
                    dynParms.Add(item.Key, item.Value);
                }
                whereClause.Parameter.Clear();
            }
            sqlOrderbyClause = string.IsNullOrEmpty(sqlOrderbyClause) ? this.BuildOrderbyClause() : sqlOrderbyClause;

            builder.Append($"{AppUtility.GetCharString(" ", "SE".Length)}ORDER BY {sqlOrderbyClause}{this.Newline}");

            builder.Append(";");
            string sql = builder.ToString();

            builder.Clear();

            return(sql, dynParms);
        }
Пример #18
0
        public virtual IEnumerable <TEntity> Select(IDbConnection conn, IEnumerable <Expression <Func <TEntity, object> > > selectFields, WhereClauseResult whereClause = null, string sqlOrderbyClause = null, IDbTransaction tr = null)
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }

            var result = this.ConstructSelectSql(selectFields, whereClause, sqlOrderbyClause);

            try
            {
                return(conn.Query <TEntity>(result.sql, result.dynParms, tr));
            }
            catch (Exception ex)
            {
                IDictionary <string, object> parameters = new Dictionary <string, object>();
                foreach (var item in result.dynParms.ParameterNames)
                {
                    parameters.Insert(item, result.dynParms.Get <object>(item));
                }

                throw new ExecuteSqlErrorException(result.sql, parameters, ex.Message, ex);
            }
        }
Пример #19
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));
 }
Пример #20
0
        public virtual async Task <IEnumerable <TEntity> > SelectAsync(IDbConnection conn, IEnumerable <Expression <Func <TEntity, object> > > selectFields, WhereClauseResult whereClause = null, string sqlOrderbyClause = null, IDbTransaction tr = null, CancellationToken cctoken = default(CancellationToken))
        {
            if (conn == null)
            {
                throw new ArgumentNullException(nameof(conn));
            }

            var result = this.ConstructSelectSql(selectFields, whereClause, sqlOrderbyClause);

            try
            {
                var cmd = this.BuildDapperCmd(result.sql, result.dynParms, tr, cancellationToken: cctoken);

                return(await conn.QueryAsync <TEntity>(cmd));
            }
            catch (Exception ex)
            {
                IDictionary <string, object> parameters = new Dictionary <string, object>();
                foreach (var item in result.dynParms.ParameterNames)
                {
                    parameters.Insert(item, result.dynParms.Get <object>(item));
                }

                throw new ExecuteSqlErrorException(result.sql, parameters, ex.Message, ex);
            }
        }
 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));
 }
Пример #22
0
 public abstract IPageResult <TKey, TEntity> SelectPage(IDbConnection conn, int pageNumber, int pageSize,
                                                        WhereClauseResult whereClause = null, string sqlOrderbyClause = null, IDbTransaction tr = null);
 public static DynamicParameters AdddWhereClause(this DynamicParameters dynParms, WhereClauseResult whereClause)
 {
     if (dynParms == null)
     {
         throw new ArgumentNullException(nameof(dynParms));
     }
     if (whereClause != null && whereClause.Any)
     {
         dynParms.AddDynamicParams((DynamicParameters)whereClause);
     }
     return(dynParms);
 }
Пример #24
0
 public abstract IPageResult <TKey, TEntity> SelectPage(IDbConnection conn, int pageNumber, int pageSize,
                                                        IEnumerable <Expression <Func <TEntity, object> > > selectFields, WhereClauseResult whereClause = null,
                                                        string sqlOrderbyClause = null, IDbTransaction tr = null);
Пример #25
0
 public CommandTextEventInfo ConstructCountSql <TKey, TEntity>(Expression <Func <TEntity, object> > member, WhereClauseResult whereClause) where TKey : IEquatable <TKey> where TEntity : class, IEntity <TKey>
 {
     throw new NotImplementedException();
 }
Пример #26
0
 public abstract Task <IPageResult <TKey, TEntity> > SelectPageAsync(IDbConnection conn, int pageNumber, int pageSize,
                                                                     WhereClauseResult whereClause = null, string sqlOrderbyClause = null, IDbTransaction tr = null,
                                                                     CancellationToken cctoken     = default(CancellationToken));
Пример #27
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();
 }
Пример #28
0
 public abstract Task <IPageResult <TKey, TEntity> > SelectPageAsync(IDbConnection conn, int pageNumber, int pageSize,
                                                                     IEnumerable <Expression <Func <TEntity, object> > > selectFields, WhereClauseResult whereClause = null,
                                                                     string sqlOrderbyClause   = null, IDbTransaction tr = null,
                                                                     CancellationToken cctoken = default(CancellationToken));
Пример #29
0
 public static IEnumerable <TEntity> Select <TKey, TEntity>(this IQueryStore <TKey, TEntity> queryStore, IStorageDbConnection conn, 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.Select(conn, selectFields, whereClause, orderbyClause, null));
 }
Пример #30
0
 public static void Update <TKey, TEntity>(this IUpdateStore <TKey, TEntity> updateStore, IStorageDbConnection conn, TEntity entityToUpdate, WhereClauseResult whereClause, IDbTransaction tr)
     where TKey : IEquatable <TKey>
     where TEntity : class, IEntity <TKey>
 {
     if (updateStore == null)
     {
         throw new ArgumentNullException(nameof(updateStore));
     }
     updateStore.Update(conn, entityToUpdate, null, whereClause, tr);
 }