【发布时间】:2021-10-23 03:07:52
【问题描述】:
我正在着手开发一个新的(dotNet Core)WebAPI,其中一些数据将从应用程序的数据库中读取(使用 EFCore),一些数据来自 Microsoft Graph。特别是,一个人的电子邮件地址和全名可以从 Graph 中检索到,并且特定于应用程序,我们想知道该人何时在应用程序中注册,以及该人上次登录的时间。在领域驱动设计方面,我想说所有这些属性都属于一个实体User。但是,我正在努力解决如何填充这样的用户实体。是否有关于如何填充其信息存储在两个不同数据库/服务中的对象的任何指导?请注意,Graph 中的信息无需更新。
我正在考虑 3 个选项:
-
最简单的选择是将实体直接存储在数据库中。使用
UserRepository,我可以首先从数据库中获取记录,然后使用从 Graph 中检索到的数据对其进行补充。 -
更复杂的选项是拥有与数据库结构相对应的类,并让
UserRepository从各种数据库/服务中获取数据,然后将其映射到真实实体。此选项的好处是实体与数据库完全断开连接,但在将实体来回映射到数据库记录方面需要做很多工作。 -
我想到的最后一个选项是将应用相关的用户信息(存储在数据库中)和身份相关的信息(在 Graph 中)视为两个不同的对象。组合这两条数据的负担将落在我的 API 的使用者身上。
如果预算有限且期限紧迫,您会怎么做?
【问题讨论】:
-
您的数据分布在多个数据库中的事实是一个重要提示[tm],您不是在建模单个域实体,而是可以通过以下方式连接(用于报告目的)的多个实体一个通用的相关标识符。
-
数据的波动性如何?例如,它的波动性是否足以成为该方法的一个因素?
标签: architecture repository domain-driven-design