- 优化 Repository.DataFilter 可禁用 GlobalFilter;

This commit is contained in:
2881099 2021-02-02 19:47:56 +08:00
parent 7cbefc24f9
commit 86d543aee9

View File

@ -20,16 +20,16 @@ namespace FreeSql
{ {
var select = base.OrmSelect(dywhere); var select = base.OrmSelect(dywhere);
var filters = (_repo.DataFilter as DataFilter<TEntity>)._filters.Where(a => a.Value.IsEnabled == true); var filters = (_repo.DataFilter as DataFilter<TEntity>)._filters;
foreach (var filter in filters) select.Where(filter.Value.Expression); foreach (var filter in filters.Where(a => a.Value.IsEnabled == true)) select.Where(filter.Value.Expression);
return select.AsTable(_repo.AsTableSelectValueInternal); return select.AsTable(_repo.AsTableSelectValueInternal).DisableGlobalFilter(filters.Where(a => a.Value.IsEnabled == false).Select(a => a.Key).ToArray());
} }
internal ISelect<TEntity> OrmSelectInternal(object dywhere) => OrmSelect(dywhere); internal ISelect<TEntity> OrmSelectInternal(object dywhere) => OrmSelect(dywhere);
protected override IUpdate<TEntity> OrmUpdate(IEnumerable<TEntity> entitys) protected override IUpdate<TEntity> OrmUpdate(IEnumerable<TEntity> entitys)
{ {
var update = base.OrmUpdate(entitys); var update = base.OrmUpdate(entitys);
var filters = (_repo.DataFilter as DataFilter<TEntity>)._filters.Where(a => a.Value.IsEnabled == true); var filters = (_repo.DataFilter as DataFilter<TEntity>)._filters;
foreach (var filter in filters) foreach (var filter in filters.Where(a => a.Value.IsEnabled == true))
{ {
if (entitys != null) if (entitys != null)
foreach (var entity in entitys) foreach (var entity in entitys)
@ -37,15 +37,15 @@ namespace FreeSql
throw new Exception($"FreeSql.Repository Update 失败,因为设置了过滤器 {filter.Key}: {filter.Value.Expression},更新的数据不符合 {_db.OrmOriginal.GetEntityString(_entityType, entity)}"); throw new Exception($"FreeSql.Repository Update 失败,因为设置了过滤器 {filter.Key}: {filter.Value.Expression},更新的数据不符合 {_db.OrmOriginal.GetEntityString(_entityType, entity)}");
update.Where(filter.Value.Expression); update.Where(filter.Value.Expression);
} }
return update.AsTable(_repo.AsTableValueInternal); return update.AsTable(_repo.AsTableValueInternal).DisableGlobalFilter(filters.Where(a => a.Value.IsEnabled == false).Select(a => a.Key).ToArray());
} }
internal IUpdate<TEntity> OrmUpdateInternal(IEnumerable<TEntity> entitys) => OrmUpdate(entitys); internal IUpdate<TEntity> OrmUpdateInternal(IEnumerable<TEntity> entitys) => OrmUpdate(entitys);
protected override IDelete<TEntity> OrmDelete(object dywhere) protected override IDelete<TEntity> OrmDelete(object dywhere)
{ {
var delete = base.OrmDelete(dywhere); var delete = base.OrmDelete(dywhere);
var filters = (_repo.DataFilter as DataFilter<TEntity>)._filters.Where(a => a.Value.IsEnabled == true); var filters = (_repo.DataFilter as DataFilter<TEntity>)._filters;
foreach (var filter in filters) delete.Where(filter.Value.Expression); foreach (var filter in filters.Where(a => a.Value.IsEnabled == true)) delete.Where(filter.Value.Expression);
return delete.AsTable(_repo.AsTableValueInternal); return delete.AsTable(_repo.AsTableValueInternal).DisableGlobalFilter(filters.Where(a => a.Value.IsEnabled == false).Select(a => a.Key).ToArray());
} }
internal IDelete<TEntity> OrmDeleteInternal(object dywhere) => OrmDelete(dywhere); internal IDelete<TEntity> OrmDeleteInternal(object dywhere) => OrmDelete(dywhere);
protected override IInsert<TEntity> OrmInsert(TEntity entity) => OrmInsert(new[] { entity }); protected override IInsert<TEntity> OrmInsert(TEntity entity) => OrmInsert(new[] { entity });