Невозможно обновить запись до удаления - PullRequest
0 голосов
/ 01 октября 2018

В одной из моих служб приложений я пытаюсь обновить запись перед удалением (с мягким удалением).После игры я обнаружил, что могу обновить запись или удалить ее, но не могу сделать и то, и другое.последняя операция (в данном случае удаление) всегда имеет приоритет.

Если я удаляю, а затем обновляю, запись не помечается как удаленная, а столбец обновляется, так как я могу обновить записи url и displayname до удаления?Я добавил атрибут UnitOfWork, но он не оказал никакого влияния

Мой метод можно найти ниже.

    [AbpAuthorize(AppPermissions.Pages_PmnyDocuments_Delete)]
    [UnitOfWork]
    public async Task Delete(EntityDto input)
    {
        var entity = await _pmnyDocumentsRepository.GetAsync(input.Id);
        var output = await _fileServerManager.DeleteAsync(new DeleteFileServerObjectInput(PmnyConsts.Bucket, $"{entity.MasterId}/{entity.ParentIdentifier}".AsFilePath(), entity.DisplayName));
        entity.Url = output.FilePath;
        entity.DisplayName = output.FileName;
        await _pmnyDocumentsRepository.UpdateAsync(entity);

        var entity2 = await _pmnyDocumentsRepository.GetAsync(entity.Id);
        await _pmnyDocumentsRepository.DeleteAsync(entity2.Id);
    }

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

вам нужно выполнить изменения сохранения между двумя вызовами, потому что все фиксации в базе данных автоматически происходят в конце вашего метода.

см. Эту цитату

SaveChanges ASP.NET Boilerplate сохраняет все изменения в конце единицы работы.Вам не нужно ничего делать, но иногда вам может понадобиться сохранить изменения в базе данных в середине рабочей операции.Например, после сохранения некоторых изменений нам может потребоваться получить идентификатор вновь вставленного объекта с помощью EntityFramework.

Вы можете использовать метод SaveChanges или SaveChangesAsync текущей единицы работы.

Обратите внимание, что если текущая единица работы является транзакционной, все изменения в транзакции откатываются в случае возникновения исключения.Даже сохраненные изменения!

0 голосов
/ 02 октября 2018

Я бы попробовал удалить атрибут [UnitOfWork] и вместо этого обернуть обновление и удалить в свое собственное значение.

 using (var unitOfWork = _unitOfWorkManager.Begin())
 {
          //UPDATE
 }

 using (var unitOfWork = _unitOfWorkManager.Begin())
 {
          //DELETE
 }

Дополнительная информация в документации здесь

...