【发布时间】:2018-04-09 13:36:02
【问题描述】:
我有一个名为 Project 的 aggregateRoot。
这个项目可以有一个名为 GitRepository 的子实体。此实体表示对外部 git 存储库(如 Github、Bitbucket)的访问。
这是一个如何查看我的持久数据的示例(我使用 NoSql DB):
Project {
id: String
name: String
GitRepository: GitRepository {
externalRepoId: String // e.g. reference to the external github repo ID
externalToken: String
}
GitRepository 实体包含允许我从此类外部服务(例如存储库名称或协作者)检索更多数据的属性。
当我有外部引用时,我不明白应该如何存储聚合根(我想我应该存储 Github 的外部 ID 引用)。但是我如何创建完整的 AR 来填充数据(合作者、存储库名称……)。
这是从外部服务获取数据后我的聚合根应该如何显示的示例。
Project {
id: String
name: String
gitRepository {
externalRepoId: String
externalToken: String
repoName: String
collaborators: List []
repoCreatedAt: Date
...
}
}
在这种情况下,我的数据库中的模型化与我的域模型不同。有效吗?
PS:另一种选择是复制数据并存储我可以从 Github 获得的所有信息,但在这种情况下我可能会出现不一致(如果用户在外部服务上更新其数据)
【问题讨论】:
-
看看这个帖子,也许对你有帮助:softwareengineering.stackexchange.com/questions/307101/…
标签: web-services model architecture entity domain-driven-design