C# 使用六边形体系结构(端口和适配器)从多个数据源加载对象

C# 使用六边形体系结构(端口和适配器)从多个数据源加载对象,c#,adapter,hexagonal-architecture,C#,Adapter,Hexagonal Architecture,说明 我正在处理一个将近40年的项目,其中有很多遗留代码。多年来,添加了多个数据库。现在,我正在逐步将其转换为带有端口和适配器的六边形体系结构 到目前为止,我总是为每个数据库创建一个适配器。但是使用这段代码将为我的域中的数据库结构提供一个表示(我不想要) 示例 如果我的域中有一个产品对象,其外观如下: public class product() { public decimal Price {get; set;} public string Description {get; set;} pu

说明

我正在处理一个将近40年的项目,其中有很多遗留代码。多年来,添加了多个数据库。现在,我正在逐步将其转换为带有端口和适配器的六边形体系结构

到目前为止,我总是为每个数据库创建一个适配器。但是使用这段代码将为我的域中的数据库结构提供一个表示(我不想要)

示例

如果我的域中有一个产品对象,其外观如下:

public class product()
{
public decimal Price {get; set;}
public string Description {get; set;}
public string Name {get; set;}

}
在这种情况下,价格可能来自数据库1、描述表单数据库2和名称来自数据库3。所有链接均由唯一代码链接

问题

在六边形架构中,我将如何做到这一点?我应该:

  • 使用多个存储库制作1个productAdapter(每个数据库1个)

  • 为每个数据库制作一个适配器,并将所有内容合并到 my domain(提供与我的域相关的域代码) 数据库结构)

  • 为每个数据库创建一个适配器和一个调用数据库适配器的productAdapter


我希望描述、示例和问题有意义

首先,您应该在应用程序中定义用于持久化产品的端口。要做到这一点,你应该从应用程序的角度问自己:

在我的应用程序中,为了解决它试图解决的问题,产品中的概念是存储在多个数据存储中还是仅存储在一个数据存储中,这是否重要

  • 如果有必要,您应该定义3个端口(每个数据存储一个)。您将合并应用程序中的数据。因为对于你的应用来说,概念存储在不同的地方很重要,所以你的应用知道它,它是你应用的一部分

  • 如果没有关系,您应该只定义一个端口来抽象持久性。并为端口定义一个适配器。适配器将根据您正在检索的属性(价格、说明、名称)访问它所需的数据库。我不会在创建另外3个适配器的适配器中抽象对这些数据库的访问。我将直接从产品适配器访问3个dbs。但这取决于你


这无关紧要,所以我使用了1个适配器连接3个数据库。很高兴得到确认。多谢各位