示例:您的数据库有一个名为“CustomerOrdersOnHold”的 SQL 视图。此视图返回特定客户和订单数据字段的过滤组合。您需要在应用程序中从此视图中获取数据。对这种视图的访问如何适应存储库模式?你会创建一个“CustomerOrdersOnHoldRepository”吗?像这样的只读视图是否被视为聚合根?
问问题
6844 次
3 回答
0
我认为拥有像“CustomerOrdersOnHoldRepository”这样的单独存储库很好。存储库的接口将反映对象是只读的这一事实(通过不定义 Save/Add/MakePersistent 方法)。
从如何编写存储库:
...但是我非常喜欢另一种策略:多个存储库。在我们的排序示例中,我们没有理由拥有两个存储库:AllOrders 和 SurchargedOrders。AllOrders 表示包含系统中每个订单的列表,SurchargedOrders 表示其中的一个子集。
我不会将返回的对象称为聚合根。聚合用于一致性、数据交换和生命周期。您的对象没有这些。似乎它们也不能归类为值对象(“特征或属性”)。它们只是独立的类。
于 2011-09-09T19:03:32.540 回答
0
您的只读数据将被视为 DDD 世界中的值对象。
我通常将值对象的访问方法放在现有存储库中,直到创建一个单独的存储库有意义。它类似于可能返回要在地址表单上使用的静态状态列表的方法:
IAddressRepository
{
Address GetAddress(string addressID);
List<string> GetStates(string country);
}
于 2011-09-09T20:18:04.203 回答