DDD:如何处理存储在多个存储系统中的一个实体?

| 我目前正在将旧版应用程序迁移到域驱动的设计模型,并且遇到了以下问题: 该应用程序涉及实时管理大量联系人,包括检查重复项。每当有人保存新联系人时,都必须通过第三方软件(基本上是相似性搜索软件)通过重复检查。如果通过了检查,则将使用SQL创建联系人,并且该联系人的一小部分(某些与重复检查相关的核心字段)必须存储在第三方软件的数据库中。 因此,实体“联系人”生活在两个(同步的)存储系统中,但是一个系统仅包含一小部分字段,而SQL具有50多个联系人字段。 现在我在考虑是否可以为\“ contact \”创建两种类型(Contact和ContactShort)。结果,我还必须为这些实体创建两个存储库,并在域服务中使用这些存储库,该服务最终将用于执行需要重复检查软件的那些操作(例如Save / Insert方法)。 是否有处理此类情况的良好经验法则? 编辑:我仍然没有找到一个确定的解决方案,但对此想了一下: 在这种情况下,将重复检查存储系统与SQL DB分开可能是错误的。实际上,我认为公开第三者软件的方法是错误的。它是纯基础架构。由于必须在没有重复检查的情况下执行保存操作,因此我认为对第3方软件的调用应该在SQLRepository内部。它永远不能离开基础结构层,因为它永远不能返回联系人的有效实体。你怎么看?     
已邀请:
        对我来说,您建议的解决方案听起来不错。在较低级别(数据访问层),您应该有两个独立的对象,这些对象包装了对两个不同数据库(两个存储库,因为您需要不同的连接字符串)的访问。如果使用相同的数据库引擎,则可以是同一XXXRepository的2个实例,也可以是不同的存储库XXXRepository和YYYRepository以访问2个不同的数据库引擎)。 但是,在较高级别(域层和GUI)上,您不应该为这些数据的放置方式和位置所困扰。如您所说,您有一项服务可以分隔多个分支,以便应用程序域和上层(如GUI)看不到下面的内容(在数据访问层中)。     

要回复问题请先登录注册