Я занимаюсь разработкой веб-API .net core 2.2 с ядром .net EF, и у меня есть таблица для задач и таблица для отклонений.
В каждой задаче может быть 0 или более отклонений, а в каждом отклонении есть одназадача.
(задача 1 <---> * Отклонить)
Каждый отказ имеет один из двух статусов: REJECT_TODO, REJECT_DONE.
Каждая задача имеет один из трех статусов: TODO, DONE, REJECTED.
Требуется следующее поведение: если у задачи есть отклонение со статусом: REJECT_TODO, то она REJECTED.
если у задачи нет отклонений или толькоreject, который имеет статус: REJECT_DONE, тогда это может быть либо TODO / DONE.
Кроме того, отклонения, извлеченные из базы данных для проверки, не обновляются с текущими изменениями, поэтому обновленный / удаленный отказ будет отображаться без изменений.
(Состояние по умолчанию после того, как REJECTED был отклонен, равно TODO)
Я хочу, чтобы все это было автоматическим для любой операции CRUD для отклонения.
Я уже пробовал повторять изменения дляОтклонить сущность в DbContext :: SaveChanges.
Проблема заключается в том, что мне нужно запросить в базе данных необновленный объект Task и выполнить обновление для задачи, которая переопределит любые изменения, уже внесенные в нее для текущего вызова SaveChanges.
Я не могу поставить его своим DAL по той же причине.
public class Task
{
[Key]
public Guid Id { get; set; }
public string Title { get; set; }
public TaskStatus Status { get; set; }
public List<Reject> Rejects { get; set; }
}
public class Reject
{
[Key]
public Guid Id { get; set; }
public string Description { get; set; }
public RejectStatus Status { get; set; }
public Guid TaskId { get; set; }
}
public enum TaskStatus
{
TODO, DONE, REJECTED
}
public enum RejectStatus
{
REJECT_TODO, REJECT_DONE
}
Ожидаемые результаты:
Создать: если в задачу добавлен отказ (с REJECT_TODO по умолчанию)) тогда родительская Задача будет ОТРАЖЕНА
Удалить / Обновить: если Отклонение удалено / обновлено из Задачи, то если больше нет отклонений со статусом REJECT_TODO для этой задачи, это будет TODO
Спасибо! :)