示例:您的数据库有一个名为"CustomerOrdersOnHold“的SQL视图。该视图返回特定客户和订单数据字段的过滤组合。您需要在应用程序中从该视图中获取数据。对这样的视图的访问如何适应存储库模式?你会创建一个"CustomerOrdersOnHoldRepository“吗?像这样的只读视图是否被视为聚合根?
发布于 2011-09-11 20:05:10
我更喜欢分离读存储库,甚至更好地将其名称更改为查找器或阅读器,存储库是为域使用而不是为了查询只读数据,你可以参考this article和this,它解释了从存储库分离的查找器的用法。
此体系结构允许您将读模型与写模型分开,甚至在数据存储和事件来源的使用方面也是如此。
对于中间解决方案,您可以利用一些CQRS概念,而不需要通过分离存储库和查找器来分离数据库的复杂性,请阅读此post
有关这种类型的解决方案的示例(使用相同的数据库,但将查找器与存储库分开),请查看this sample
发布于 2011-09-10 04:18:04
在DDD世界中,您的只读数据将被视为值对象。
我通常将值对象的访问方法放在现有的存储库中,直到有必要创建一个单独的存储库。它类似于一个方法,它可能返回一个静态列表,该列表将在地址表单上使用:
IAddressRepository
{
Address GetAddress(string addressID);
List<string> GetStates(string country);
}
https://stackoverflow.com/questions/7365913
复制相似问题