我正在开发具有.net EF核心的.net核心2.2 Web api,并且有用于任务的表和用于拒绝的表。
每个任务可以有0个或更多拒绝,每个拒绝都有一个任务。
(任务1 <---> *拒绝)
每个拒绝都具有以下两种状态之一:REJECT_TODO,REJECT_DONE。
每个任务都有以下三种状态之一:TODO,DONE,REJECTED。
需要以下行为: 如果任务的拒绝状态为REJECT_TODO,则该任务被拒绝。
如果任务没有拒绝或仅拒绝状态为REJECT_DONE的拒绝,则它可以是TODO / DONE。
从数据库中提取的用于检查的拒绝项不会使用当前更改进行更新,因此更新/删除的拒绝项将保持不变。
(“拒绝”后的默认状态为“待办事项”)
我希望所有这些对于Reject上的任何CRUD操作都是自动的。
我已经尝试对DbContext :: SaveChanges中的Reject实体进行迭代更改。
问题是我需要在数据库中查询未更新的Task实体,并为该任务执行Update,该任务将覆盖当前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
谢谢! :)