TLDR; 我有一个repo接口和多个数据源,每个都有不同的数据标识符 - 如何在界面中只维护一个方法?
我需要从两个不同的存储库中读取域对象OrderData
:一个是外部服务,另一个是本地数据库。
我们称他们为OutsideServiceOrderRepo
和LocalDbOrderRepo
。
它们都实现了一个名为IOrderRepoRead
的接口:
Interface IOrderRepoRead
+GetOrder(OrderEntityData) : Order
我永远不会在同一个用例中使用这两种实现,它只是一种情况。我已经解决了如何在组合根处注入一个或另一个repo,具体取决于用例。 我遇到的问题是,这些数据存储中的每一个都具有不同的数据标识符:
OrderId
。Tax_number+Name+what_not
等... 我到目前为止提出的想法如下:
OrderEntityData
的类型,其属性为TaxNumber
,Name
,OrderId
。两种实现都可以使用此类型,每种实现都使用它所需的属性:OutsideServiceOrderRepo
使用TaxNumber
,Name
,而LocalDbOrderRepo
使用OrderId
。OrderEntityData
并在我的IOrderRepoRead
中使用两种不同的方法。
Interface IOrderRepoRead
+GetOrder(taxNumber, name, whatNot) : Order
+GetOrder(orderId) : Order
我倾向于采用方法#1,但仍然感觉回购和客户代码之间存在一定程度的耦合。
如何有效地在不同的标识符之间切换?