7 language-agnostic domain-driven-design ddd-repositories
我是领域模型,POCO和DDD的新手,所以我仍然试图了解一些想法.
我无法弄清楚的一件事是如何保持我的域模型简单且与存储无关,但仍然能够以丰富的方式对其数据执行某些查询.
例如,假设我有一个具有OrdemItem集合的实体Order.无论出于何种原因,我想获得最便宜的订单商品,或者可能是当前没有库存的订单商品列表.我不想做的是从存储中检索所有订单商品并在以后过滤(太贵),所以我想以某种方式最终得到"SELECT .. WHERE ITEM.INSTOCK = FALSE"类型的数据库查询.我不希望在我的实体中有这个SQL查询,或者是否会将我绑定到特定平台的任何变体,例如Linq2SQL上的NHibernate查询.那种情况下的常见解决方案是什么?
据我了解这种设计风格,您可以将查询封装在 OrderItemRepository(或更合适的 OrderRepository)对象的方法中,该对象的职责是一方面与数据库通信,另一方面返回 OrderItem 对象。存储库向 OrderItem 实例的使用者隐藏数据库的详细信息。