如何在软删除中获取参考数据?

时间:2019-08-19 10:05:17

标签: c# .net-core

在获取父数据的同时,我也获取了代码中显示的子数据,为了摆脱这一点,我使用了foreach循环,但是当db太大时,这不是一个好方法。请帮助

 public async Task<DataSourceResult> GetAll(DataSourceRequest request)
        {
            var data = _unitOfWork.SchoolsRepository.GetAll().Where(x => x.IsDeleted == false)
                                                .Include(x => x.SchoolBranches)
                                                .ThenInclude(y => y.Classes)                                                
                                                .ToDataSourceResult(request);
            List<Schools> result = (List<Schools>)data.Data;
            if (result != null)
            {
                foreach (var item in result)
                {
                    var schoolBranch = item.SchoolBranches.Where(x => !x.IsDeleted).ToList();
                    foreach (var _item in schoolBranch)
                    {
                        var _class = _item.Classes.Where(x=>!x.IsDeleted).ToList();
                        _item.Classes = _class;
                    }
                    item.SchoolBranches = schoolBranch;
                }
                data.Data = result;
                return data;
            }
            else
            {
                throw new FriendlyExceptionHandler("No data found!", HttpStatusCode.BadRequest);
            }
        }

我希望他们的孩子的学校数据(父母)在数据库中没有被SoftDeleted清除。

1 个答案:

答案 0 :(得分:1)

您可以尝试这个https://entityframework-plus.net/query-include-filter吗?

var data = _unitOfWork.SchoolsRepository.GetAll().Where(x => x.IsDeleted == false)
                                                    .IncludeFilter(x => x.SchoolBranches.Where(i => !i.IsDeleted))
                                                    .ThenInclude(y => y.Classes)                                                
                                                    .ToDataSourceResult(request);