【发布时间】:2023-03-12 04:44:01
【问题描述】:
我刚刚开始使用领域驱动设计并尝试将其应用于我当前的项目。
我从纯域模型开始,现在坚持使用我的数据访问层。我有一个完全自制的数据访问层,因此没有任何众所周知的 ORM 工具可以在这里应用。
我不知道如何处理更新。假设我有以下对象:
public class Document : Entity
{
public IPropertiesCollection Properties { get; set; }
public IContents Contents { get; set; }
}
public class PostalDocumentsPackage : Entity
{
public String Name { get; set; }
public DateTime DeliverDate { get; set; }
public ICollection<Document> Documents { get; set; }
}
我有相应的存储库 IDocumentsRepository 和 IPostalDocumentPackagesRepository 用于检索对象(目前)。
我现在处理的问题是当我想添加一个新的文档做 PostalDocumentsPackage 的 Documents 集合时。基本上我在这里看到两种可能的情况:
1) 实现跟踪原始集合中更改的集合并保存已更新\删除的项目列表。
2) 在存储库中实现单独的方法以将文档添加到包中。
我想知道这些方法是否可行或将来会导致问题?还是有其他选择?
【问题讨论】:
-
小子哦小子,恐怕你还有很多工作要做。在模型中散布实体和存储库不会使其成为 DDD。不是跟踪文档,而是跟踪文档标识符。此外,由于您使用的是自定义持久性,因此请尝试更多地封装状态。首先考虑一个对象的行为,我保证,状态会自然而然地遵循。
-
引用 Jeff Atwood 的话:“不要重新发明轮子,除非你打算学习更多关于轮子的知识”。那么,你在学习 ORM 吗?如果没有,你为什么要重新发明 ORM?
标签: domain-driven-design data-access-layer