我会就您如何看待存储库模式发表意见。
在“旧”域概念中(例如来自EAAA 的 P),存储库应该像“内存中的集合”,所以它应该总是返回相同的类型,所以如果你需要一个投影,你必须做出来,所以例如,投影将在服务层中进行,对吗?还是可以直接进入“域”项目?
例如
public class CustomerRepository
{
//Constructor accepts an IRepository<Customer>
public IQueryable<Customer> GetAllDebtors()
{
//Use IRepository<Customer> here to make the query
}
}
相反,在 DDD 中,存储库,尤其是与 CQRS 结合使用,可以直接返回投影类型,因为存储库成为非规范化服务,对吧?
例如
public class CustomerDenormalizer
{
//Constructor *could* accept an IRepository<Customer>
public IQueryable<Debtor> GetAllDebtors()
{
//Use IRepository<Customer> here to make the query and the projection
}
}