Domain driven design 删除被引用实体时删除实体
使用DDD,我有4个聚合根,其中,使用预约类比,一个诊所可以有多个患者,每个患者可以有多个预约,每个预约可以有多个处方 现在,为了避免创建非常大的膨胀聚合,在本例中,我创建了4个单独的聚合根Domain driven design 删除被引用实体时删除实体,domain-driven-design,entity-framework-6,Domain Driven Design,Entity Framework 6,使用DDD,我有4个聚合根,其中,使用预约类比,一个诊所可以有多个患者,每个患者可以有多个预约,每个预约可以有多个处方 现在,为了避免创建非常大的膨胀聚合,在本例中,我创建了4个单独的聚合根 public class Clinic { public Guid Id { get; private set; } } public class Patient { public Guid Id { get; private set; } public Guid ClinicI
public class Clinic
{
public Guid Id { get; private set; }
}
public class Patient
{
public Guid Id { get; private set; }
public Guid ClinicId { get; private set; }
public Patient(Guid clinicId)
{
ClinicId = clinicId;
}
}
public class Appointment
{
public Guid Id { get; private set; }
public Guid PatientId { get; private set; }
public Appointment(Guid patientId)
{
PatientId = patientId;
}
}
现在,问题是我应该如何管理删除患者的场景,在这种情况下,引用该患者的所有预约也应该删除 我想这就是领域专家将派上用场的地方。从技术角度来看,这可能取决于您所决定的体系结构 100%一致性 在这里,您可以使用应用程序服务首先删除患者,然后删除链接到该患者的所有预约 最终一致性 使用消息传递,您可以发布
PatientDeletedEvent
,该事件将由删除约会的某个端点响应
但是
您可能一开始就不想删除患者。即使如此,您关于预约的问题(例如,将患者设置为非活动状态)仍可能导致您希望删除未来的预约
在这里,您需要领域专家来指导您创建正确的模型和行为