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); }
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())); }
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()); }