Beispiel #1
0
        public async Task <int> SoftDeleteWithAffectedNumAsync()
        {
            IList <object> ids = new List <object>();
            var            pk  = Db.EntityDescriptor.PrimaryKey;

            if (Db.DbContext.ObserverHandler != null && !pk.IsNo())
            {
                var queryBody    = QueryBody.Copy();
                var queryBuilder = new QueryBuilder(queryBody, SqlAdapter, Logger, Db.DbContext);
                var querySql     = queryBuilder.QuerySqlBuild(out IQueryParameters queryParameters);
                var list         = await Db.QueryAsync <TEntity>(querySql, queryParameters.Parse(), QueryBody.Uow);

                if (list != null && list.Any())
                {
                    ids = list.Select(m => pk.PropertyInfo.GetValue(m)).Distinct().ToList();
                }
            }
            var sql = QueryBuilder.SoftDeleteSqlBuild(out IQueryParameters parameters);

            var result = await Db.ExecuteAsync(sql, parameters.Parse(), QueryBody.Uow);

            if (result > 0 && ids.Any())
            {
                var tasks = ids.Select(id => Db.DbContext.ObserverHandler.Delete <TEntity>(id));
                await Task.WhenAll(tasks);
            }
            return(result);
        }
Beispiel #2
0
        public async Task <int> UpdateWithAffectedNumAsync(Expression <Func <TEntity, TEntity> > expression, bool setModifiedBy = true, string updateSql = null, object parameterObject = null)
        {
            IList <object> ids = new List <object>();
            var            pk  = Db.EntityDescriptor.PrimaryKey;

            if (Db.DbContext.ObserverHandler != null && !pk.IsNo())
            {
                var queryBody    = QueryBody.Copy();
                var queryBuilder = new QueryBuilder(queryBody, SqlAdapter, Logger, Db.DbContext);
                var querySql     = queryBuilder.QuerySqlBuild(out IQueryParameters queryParameters);
                var list         = await Db.QueryAsync <TEntity>(querySql, queryParameters.Parse(), QueryBody.Uow);

                if (list != null && list.Any())
                {
                    ids = list.Select(m => pk.PropertyInfo.GetValue(m)).Distinct().ToList();
                }
            }
            if (updateSql.IsNull())
            {
                QueryBody.Update = expression;
            }
            else
            {
                QueryBody.UpdateSql = updateSql;
            }

            QueryBody.SetModifiedBy = setModifiedBy;
            var sql   = QueryBuilder.UpdateSqlBuild(out IQueryParameters parameters);
            var param = parameters.Parse();

            if (updateSql.IsNull() && parameterObject != null)
            {
                param.AddDynamicParams(parameterObject);
            }
            var result = await Db.ExecuteAsync(sql, param, QueryBody.Uow);

            if (result > 0 && ids.Any())
            {
                var tasks = ids.Select(id => Db.DbContext.ObserverHandler.Update <TEntity>(id));
                await Task.WhenAll(tasks);
            }
            return(result);
        }
 public INetSqlQueryable <TEntity, TEntity2> Copy()
 {
     return(new NetSqlQueryable <TEntity, TEntity2>(Db, QueryBody.Copy()));
 }
Beispiel #4
0
 public INetSqlQueryable <TEntity, TEntity2, TEntity3, TEntity4, TEntity5, TEntity6, TEntity7, TEntity8> Copy()
 {
     return(new NetSqlQueryable <TEntity, TEntity2, TEntity3, TEntity4, TEntity5, TEntity6, TEntity7, TEntity8>(Db, QueryBody.Copy()));
 }
 public INetSqlQueryable<TEntity> Copy()
 {
     return new NetSqlQueryable<TEntity>(Db, QueryBody.Copy());
 }