C# 更新父记录时,子记录中的EF被删除

C# 更新父记录时,子记录中的EF被删除,c#,entity-framework,C#,Entity Framework,添加父记录和子记录时,将忽略子记录;更新父记录时,将删除子记录(如果存在) public ItemResponse<bool> SyncUp(List<DAL.Entities.Task> Tasks, Guid UserClientID) { using (IUnitOfWork uow = new DAL.Data.UnitOfWork(new DAL.DataContext.DatabaseContext(DAL.DataContext

添加父记录和子记录时,将忽略子记录;更新父记录时,将删除子记录(如果存在)

   public ItemResponse<bool> SyncUp(List<DAL.Entities.Task> Tasks, Guid UserClientID)
    {
        using (IUnitOfWork uow = new DAL.Data.UnitOfWork(new DAL.DataContext.DatabaseContext(DAL.DataContext.DatabaseContext.ops.dbOptions)))
        {
            var Res = AddUpdateRange(uow, Tasks);
            uow.Complete();
            return Res;
        }
    }
 public ItemResponse<bool> AddUpdateRange(Web.DAL.Inteface.IUnitOfWork uow, List<DAL.Entities.Task> tasks)
    {
        try
        {
            var taskOrganisationRels = tasks.SelectMany(p => p.OrganisationTaskRels).DistinctBy(p=>p.ID).ToList();
            var taskStoreRels = tasks.SelectMany(p => p.StoreTaskRels).DistinctBy(p=>p.ID).ToList();
            var taskUserCompletionRels = tasks.SelectMany(p => p.TaskUserCompletionRels).DistinctBy(p=>p.ID).ToList();
            var taskJobTitleRels = tasks.SelectMany(p => p.JobTitleTaskRels).DistinctBy(p=>p.ID).ToList();
            var tasksNotesRels = tasks.SelectMany(p => p.TaskNoteRels).DistinctBy(p=>p.ID).ToList();
            var tasksUsersRels = tasks.SelectMany(p => p.TaskUserRels).DistinctBy(p=>p.ID).ToList();
            var notes = tasksNotesRels.Select(p => p.Note).DistinctBy(p=>p.ID).ToList();


            var tasksList = tasks.Select(p =>
            {
                p.TaskNoteRels.Clear();
                p.CaseTaskRels.Clear();
                p.TaskUserRels.Clear();
                p.JobTitleTaskRels.Clear();
                p.OrganisationTaskRels.Clear();
                p.StoreTaskRels.Clear();
                p.LastSyncDateTime = DateTimeOffset.Now; 
                return p;
            }).DistinctBy(p => p.ID).ToList();
            uow.Tasks.AddUpdateRange(tasksList);

            if (tasksNotesRels.Any())
            {
                if (notes.Any())
                {
                    (new NoteLogic()).AddUpdateRange(uow, notes);
                }

                uow.TaskNoteRel.AddUpdateRange(tasksNotesRels.Select(p =>
                {
                    p.Note = null;
                    p.Task = null;
                    p.LastSyncDateTime = DateTimeOffset.Now;
                    return p;
                }).DistinctBy(p => p.ID));
            }

            return new ItemResponse<bool>(true);
        }
        catch (Exception Exc)
        {
            throw Exc;
        }
    }
public ItemResponse<bool> AddUpdateRange(Web.DAL.Inteface.IUnitOfWork uow, List<Entity.Note> Items)
    {

        try
        {
            var NoteFileRels = Items.Where(p => p.NoteFileRels.Any()).SelectMany(p => p.NoteFileRels).ToList();
            var Files = NoteFileRels.Where(p => p.File != null).Select(p => p.File).ToList();

            uow.Notes.AddUpdateRange(Items);
            if (NoteFileRels.Any())
            {
                if (Files.Any())
                {
                    (new FileLogic()).AddUpdateRange(uow, Files);
                }
                uow.NoteFileRel.AddUpdateRange(NoteFileRels.Select(p=>
                {
                    p.Note = null;
                    p.File = null;
                    return p;
                }).DistinctBy(p => p.ID));
            }
            return new ItemResponse<bool>(true, null);
        }
        catch (Exception Exc)
        {
            return new ItemResponse<bool>(false, Exc);
        }
    }
  uow.NoteFileRel.AddUpdateRange(NoteFileRels.Select(p=>
            {
                p.Note = null;
                p.File = null;
                return p;
            }).DistinctBy(p => p.ID));